[{"data":1,"prerenderedAt":1207},["ShallowReactive",2],{"header:help":3,"footer:default":67,"story:navigation\u002Fsearch:help":250,"story:help\u002Fcategories":288,"story:help\u002Farticles\u002Fcustom-shipping-code-api-reference":314,"no-guide:custom-shipping-code-api-reference":59,"article:\u002Fhelp\u002Farticles\u002Fcustom-shipping-code-api-reference":930,"story:contact":962,"help:tree:7b057a6e-5277-42ef-8c0e-946e72139991":1152,"_apollo:default":1206},{"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":923,"full_slug":924,"sort_by_date":59,"position":925,"tag_list":926,"is_startpage":24,"parent_id":927,"meta_data":59,"group_id":928,"first_published_at":317,"release_id":59,"lang":65,"path":59,"alternates":929,"default_full_slug":59,"translated_slugs":59},"Custom Shipping Code API Reference","2026-05-27T21:07:12.138Z","2026-05-28T21:09:22.488Z","2026-05-28T21:09:22.506Z",181151466090383,"7b057a6e-5277-42ef-8c0e-946e72139991",{"_uid":322,"body":323,"name":315,"image":918,"pinned":24,"summary":920,"category":921,"component":266,"related_articles":922},"120eab7d-575a-47fe-aafe-8ed6fd5b6420",{"type":324,"content":325},"doc",[326,334,347,352,359,382,388,399,404,411,416,478,483,488,495,517,522,527,536,545,550,555,562,567,670,675,680,689,698,709,714,719,724,731,775,780,785,792,797,802,812,880,885,894,903,908],{"type":327,"attrs":328,"content":330},"heading",{"level":329,"textAlign":59},2,[331],{"text":332,"type":333},"Overview","text",{"type":335,"attrs":336,"content":337},"paragraph",{"textAlign":59},[338,340,345],{"text":339,"type":333},"The ",{"text":341,"type":333,"marks":342},"rates",[343],{"type":344},"code",{"text":346,"type":333}," object is the primary interface for manipulating shipping rates in Custom Shipping Code. It's pre populated with any rates returned from carriers or the custom endpoint, and all methods are chainable (unless they return a value).",{"type":327,"attrs":348,"content":349},{"level":329,"textAlign":59},[350],{"text":351,"type":333},"Adding rates",{"type":335,"attrs":353,"content":354},{"textAlign":59},[355],{"text":356,"type":333,"marks":357},"rates.add(id, price, method, service_name)",[358],{"type":344},{"type":335,"attrs":360,"content":361},{"textAlign":59},[362,364,368,370,374,376,380],{"text":363,"type":333},"Adds a new rate. ",{"text":365,"type":333,"marks":366},"id",[367],{"type":344},{"text":369,"type":333}," must be 10000 or higher (if you pass a lower number, 10000 is added automatically). At least one of ",{"text":371,"type":333,"marks":372},"method",[373],{"type":344},{"text":375,"type":333}," or ",{"text":377,"type":333,"marks":378},"service_name",[379],{"type":344},{"text":381,"type":333}," is required. Pass an empty string for the one you don't need.",{"type":383,"attrs":384,"content":385},"code_block",{"class":59},[386],{"text":387,"type":333},"rates.add(10001, 5.99, 'FoxyPost', 'Standard');\nrates.add(10002, 0, '', 'Free Shipping');",{"type":335,"attrs":389,"content":390},{"textAlign":59},[391,393,397],{"text":392,"type":333},"Custom rates added with ",{"text":394,"type":333,"marks":395},"rates.add()",[396],{"type":344},{"text":398,"type":333}," do not automatically include handling fees or flat rates from other categories. Use the handling\u002Fflat rate helpers (below) if you need to include them.",{"type":327,"attrs":400,"content":401},{"level":329,"textAlign":59},[402],{"text":403,"type":333},"Filtering rates",{"type":335,"attrs":405,"content":406},{"textAlign":59},[407],{"text":408,"type":333,"marks":409},"rates.filter(selector)",[410],{"type":344},{"type":335,"attrs":412,"content":413},{"textAlign":59},[414],{"text":415,"type":333},"Returns a new Rates object containing only matching rates. The original collection is not modified. The selector can be:",{"type":417,"content":418},"bullet_list",[419,438,460],{"type":420,"content":421},"list_item",[422],{"type":335,"attrs":423,"content":424},{"textAlign":59},[425,427,432,434],{"text":426,"type":333},"A ",{"text":428,"type":333,"marks":429},"number",[430],{"type":431},"bold",{"text":433,"type":333}," — matches by ",{"text":435,"type":333,"marks":436},"service_id",[437],{"type":344},{"type":420,"content":439},[440],{"type":335,"attrs":441,"content":442},{"textAlign":59},[443,444,448,450,453,455,458],{"text":426,"type":333},{"text":445,"type":333,"marks":446},"string",[447],{"type":431},{"text":449,"type":333}," — matches against ",{"text":371,"type":333,"marks":451},[452],{"type":344},{"text":454,"type":333}," and ",{"text":377,"type":333,"marks":456},[457],{"type":344},{"text":459,"type":333}," (case insensitive)",{"type":420,"content":461},[462],{"type":335,"attrs":463,"content":464},{"textAlign":59},[465,467,471,473,476],{"text":466,"type":333},"An ",{"text":468,"type":333,"marks":469},"array of numbers",[470],{"type":431},{"text":472,"type":333}," — matches multiple ",{"text":435,"type":333,"marks":474},[475],{"type":344},{"text":477,"type":333}," values",{"type":383,"attrs":479,"content":480},{"class":59},[481],{"text":482,"type":333},"rates.filter(10001).price(0);\nrates.filter('fedex').hide();\nrates.filter([10001, 10002]).price('+5');",{"type":327,"attrs":484,"content":485},{"level":329,"textAlign":59},[486],{"text":487,"type":333},"Checking if rates exist",{"type":335,"attrs":489,"content":490},{"textAlign":59},[491],{"text":492,"type":333,"marks":493},"rates.exists([selector])",[494],{"type":344},{"type":335,"attrs":496,"content":497},{"textAlign":59},[498,500,504,506,509,511,515],{"text":499,"type":333},"Returns ",{"text":501,"type":333,"marks":502},"true",[503],{"type":344},{"text":505,"type":333}," if rates exist. If a selector is provided, returns ",{"text":501,"type":333,"marks":507},[508],{"type":344},{"text":510,"type":333}," only if matching rates exist. Selector works the same as ",{"text":512,"type":333,"marks":513},"filter()",[514],{"type":344},{"text":516,"type":333},".",{"type":383,"attrs":518,"content":519},{"class":59},[520],{"text":521,"type":333},"if (!rates.exists()) {\n  rates.add(10001, 15, '', 'Fallback Rate');\n}",{"type":327,"attrs":523,"content":524},{"level":329,"textAlign":59},[525],{"text":526,"type":333},"Showing and hiding rates",{"type":335,"attrs":528,"content":529},{"textAlign":59},[530,534],{"text":531,"type":333,"marks":532},"rates.hide()",[533],{"type":344},{"text":535,"type":333}," — hides the matched rates from the customer. Hidden rates remain in the collection and can still be filtered or shown later.",{"type":335,"attrs":537,"content":538},{"textAlign":59},[539,543],{"text":540,"type":333,"marks":541},"rates.show()",[542],{"type":344},{"text":544,"type":333}," — makes previously hidden rates visible again.",{"type":383,"attrs":546,"content":547},{"class":59},[548],{"text":549,"type":333},"rates.filter('usps').hide();\nrates.filter(10001).show();",{"type":327,"attrs":551,"content":552},{"level":329,"textAlign":59},[553],{"text":554,"type":333},"Modifying prices",{"type":335,"attrs":556,"content":557},{"textAlign":59},[558],{"text":559,"type":333,"marks":560},"rates.price(modifier)",[561],{"type":344},{"type":335,"attrs":563,"content":564},{"textAlign":59},[565],{"text":566,"type":333},"Sets or adjusts the price of matched rates. The modifier can be:",{"type":417,"content":568},[569,580],{"type":420,"content":570},[571],{"type":335,"attrs":572,"content":573},{"textAlign":59},[574,575,578],{"text":426,"type":333},{"text":428,"type":333,"marks":576},[577],{"type":431},{"text":579,"type":333}," — sets the price to that exact value",{"type":420,"content":581},[582,591],{"type":335,"attrs":583,"content":584},{"textAlign":59},[585,586,589],{"text":426,"type":333},{"text":445,"type":333,"marks":587},[588],{"type":431},{"text":590,"type":333}," with an operator prefix:",{"type":417,"content":592},[593,604,615,626,637,648,659],{"type":420,"content":594},[595],{"type":335,"attrs":596,"content":597},{"textAlign":59},[598,602],{"text":599,"type":333,"marks":600},"'+5'",[601],{"type":344},{"text":603,"type":333}," — adds 5 to the current price",{"type":420,"content":605},[606],{"type":335,"attrs":607,"content":608},{"textAlign":59},[609,613],{"text":610,"type":333,"marks":611},"'-5'",[612],{"type":344},{"text":614,"type":333}," — subtracts 5",{"type":420,"content":616},[617],{"type":335,"attrs":618,"content":619},{"textAlign":59},[620,624],{"text":621,"type":333,"marks":622},"'*2'",[623],{"type":344},{"text":625,"type":333}," — multiplies by 2",{"type":420,"content":627},[628],{"type":335,"attrs":629,"content":630},{"textAlign":59},[631,635],{"text":632,"type":333,"marks":633},"'\u002F2'",[634],{"type":344},{"text":636,"type":333}," — divides by 2",{"type":420,"content":638},[639],{"type":335,"attrs":640,"content":641},{"textAlign":59},[642,646],{"text":643,"type":333,"marks":644},"'=15'",[645],{"type":344},{"text":647,"type":333}," — sets to exactly 15 (same as passing a number)",{"type":420,"content":649},[650],{"type":335,"attrs":651,"content":652},{"textAlign":59},[653,657],{"text":654,"type":333,"marks":655},"'+20%'",[656],{"type":344},{"text":658,"type":333}," — adds 20% of the current price",{"type":420,"content":660},[661],{"type":335,"attrs":662,"content":663},{"textAlign":59},[664,668],{"text":665,"type":333,"marks":666},"'-20%'",[667],{"type":344},{"text":669,"type":333}," — subtracts 20% of the current price",{"type":383,"attrs":671,"content":672},{"class":59},[673],{"text":674,"type":333},"rates.filter('usps').price('+2.50');\nrates.filter(10001).price(0);\nrates.filter('fedex').price('-10%');",{"type":327,"attrs":676,"content":677},{"level":329,"textAlign":59},[678],{"text":679,"type":333},"Modifying labels",{"type":335,"attrs":681,"content":682},{"textAlign":59},[683,687],{"text":684,"type":333,"marks":685},"rates.method(string)",[686],{"type":344},{"text":688,"type":333}," — sets the carrier\u002Fmethod name for matched rates.",{"type":335,"attrs":690,"content":691},{"textAlign":59},[692,696],{"text":693,"type":333,"marks":694},"rates.service(string)",[695],{"type":344},{"text":697,"type":333}," — sets the service name for matched rates.",{"type":335,"attrs":699,"content":700},{"textAlign":59},[701,703,707],{"text":702,"type":333},"When called without an argument inside an ",{"text":704,"type":333,"marks":705},".each()",[706],{"type":344},{"text":708,"type":333}," callback, these return the current value.",{"type":383,"attrs":710,"content":711},{"class":59},[712],{"text":713,"type":333},"rates.filter('usps').method('US Postal Service');\nrates.filter(10001).service('Economy');",{"type":335,"attrs":715,"content":716},{"textAlign":59},[717],{"text":718,"type":333},"Note: HTML in method or service strings is not currently supported.",{"type":327,"attrs":720,"content":721},{"level":329,"textAlign":59},[722],{"text":723,"type":333},"Iterating over rates",{"type":335,"attrs":725,"content":726},{"textAlign":59},[727],{"text":728,"type":333,"marks":729},"rates.each(fn)",[730],{"type":344},{"type":335,"attrs":732,"content":733},{"textAlign":59},[734,736,740,742,746,748,752,754,758,759,763,764,768,770,774],{"text":735,"type":333},"Calls ",{"text":737,"type":333,"marks":738},"fn",[739],{"type":344},{"text":741,"type":333}," for each matched rate. Inside the callback, ",{"text":743,"type":333,"marks":744},"this",[745],{"type":344},{"text":747,"type":333}," refers to the individual rate and exposes ",{"text":749,"type":333,"marks":750},".price()",[751],{"type":344},{"text":753,"type":333},", ",{"text":755,"type":333,"marks":756},".method()",[757],{"type":344},{"text":753,"type":333},{"text":760,"type":333,"marks":761},".service()",[762],{"type":344},{"text":753,"type":333},{"text":765,"type":333,"marks":766},".hide()",[767],{"type":344},{"text":769,"type":333},", and ",{"text":771,"type":333,"marks":772},".show()",[773],{"type":344},{"text":516,"type":333},{"type":383,"attrs":776,"content":777},{"class":59},[778],{"text":779,"type":333},"rates.filter('fedex').each(function() {\n  this.service(this.service() + ' (Signature Required)');\n});",{"type":327,"attrs":781,"content":782},{"level":329,"textAlign":59},[783],{"text":784,"type":333},"Sorting",{"type":335,"attrs":786,"content":787},{"textAlign":59},[788],{"text":789,"type":333,"marks":790},"rates.sort()",[791],{"type":344},{"type":335,"attrs":793,"content":794},{"textAlign":59},[795],{"text":796,"type":333},"Sorts matched rates by price (ascending). Note that Foxy always re sorts rates ascending for display regardless of your code's ordering, so this is mainly useful if you need sorted iteration.",{"type":327,"attrs":798,"content":799},{"level":329,"textAlign":59},[800],{"text":801,"type":333},"Handling fees and flat rates",{"type":335,"attrs":803,"content":804},{"textAlign":59},[805,807,810],{"text":806,"type":333},"Custom rates added via ",{"text":394,"type":333,"marks":808},[809],{"type":344},{"text":811,"type":333}," do not automatically include handling fees or flat rates from other categories in the cart. These helpers let you add or remove them:",{"type":417,"content":813},[814,825,836,847,858,869],{"type":420,"content":815},[816],{"type":335,"attrs":817,"content":818},{"textAlign":59},[819,823],{"text":820,"type":333,"marks":821},"rates.addHandling()",[822],{"type":344},{"text":824,"type":333}," — adds handling fees from other categories to matched rates",{"type":420,"content":826},[827],{"type":335,"attrs":828,"content":829},{"textAlign":59},[830,834],{"text":831,"type":333,"marks":832},"rates.addFlatRate()",[833],{"type":344},{"text":835,"type":333}," — adds flat rate fees from other categories",{"type":420,"content":837},[838],{"type":335,"attrs":839,"content":840},{"textAlign":59},[841,845],{"text":842,"type":333,"marks":843},"rates.addHandlingAndFlatRate()",[844],{"type":344},{"text":846,"type":333}," — adds both",{"type":420,"content":848},[849],{"type":335,"attrs":850,"content":851},{"textAlign":59},[852,856],{"text":853,"type":333,"marks":854},"rates.removeHandling()",[855],{"type":344},{"text":857,"type":333}," — removes handling fees from matched rates",{"type":420,"content":859},[860],{"type":335,"attrs":861,"content":862},{"textAlign":59},[863,867],{"text":864,"type":333,"marks":865},"rates.removeFlatRate()",[866],{"type":344},{"text":868,"type":333}," — removes flat rate fees",{"type":420,"content":870},[871],{"type":335,"attrs":872,"content":873},{"textAlign":59},[874,878],{"text":875,"type":333,"marks":876},"rates.removeHandlingAndFlatRate()",[877],{"type":344},{"text":879,"type":333}," — removes both",{"type":327,"attrs":881,"content":882},{"level":329,"textAlign":59},[883],{"text":884,"type":333},"Errors and resets",{"type":335,"attrs":886,"content":887},{"textAlign":59},[888,892],{"text":889,"type":333,"marks":890},"rates.error(message)",[891],{"type":344},{"text":893,"type":333}," — sets an error message. If set, the error is displayed to the customer instead of any rates (error takes precedence).",{"type":335,"attrs":895,"content":896},{"textAlign":59},[897,901],{"text":898,"type":333,"marks":899},"rates.reset()",[900],{"type":344},{"text":902,"type":333}," — clears all rates and any error message.",{"type":327,"attrs":904,"content":905},{"level":329,"textAlign":59},[906],{"text":907,"type":333},"The cart object",{"type":335,"attrs":909,"content":910},{"textAlign":59},[911,912,916],{"text":339,"type":333},{"text":913,"type":333,"marks":914},"cart",[915],{"type":344},{"text":917,"type":333}," object available in Custom Shipping Code contains the same payload sent to the Custom Shipping Endpoint. See the [Shipping Payload Reference] for the full structure, field descriptions, and common access patterns.",{"id":59,"alt":59,"name":13,"focus":59,"title":59,"source":59,"filename":13,"copyright":59,"fieldtype":81,"meta_data":919},{},"Complete reference for the rates JavaScript API available in Custom Shipping Code feature of the Foxy Admin.","621d64cc-1acf-415b-9dd9-0492d1a683bf",[],"custom-shipping-code-api-reference","help\u002Farticles\u002Fcustom-shipping-code-api-reference",-1900,[],2659,"e7481619-f7c8-4d46-9be9-42733b938287",[],{"html":931,"sections":932,"segments":958},"\u003Csection id=\"overview\" data-title=\"Overview\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"overview\">Overview\u003C\u002Fh2>\u003Cp>The \u003Ccode class=\"badge bg-soft-danger text-danger\">rates\u003C\u002Fcode> object is the primary interface for manipulating shipping rates in Custom Shipping Code. It&#039;s pre populated with any rates returned from carriers or the custom endpoint, and all methods are chainable (unless they return a value).\u003C\u002Fp>\u003C\u002Fsection>\u003Csection id=\"adding-rates\" data-title=\"Adding rates\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"adding-rates\">Adding rates\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.add(id, price, method, service_name)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>Adds a new rate. \u003Ccode class=\"badge bg-soft-danger text-danger\">id\u003C\u002Fcode> must be 10000 or higher (if you pass a lower number, 10000 is added automatically). At least one of \u003Ccode class=\"badge bg-soft-danger text-danger\">method\u003C\u002Fcode> or \u003Ccode class=\"badge bg-soft-danger text-danger\">service_name\u003C\u002Fcode> is required. Pass an empty string for the one you don&#039;t need.\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>rates.add(10001, 5.99, &#x27;FoxyPost&#x27;, &#x27;Standard&#x27;);\nrates.add(10002, 0, &#x27;&#x27;, &#x27;Free Shipping&#x27;);\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cp>Custom rates added with \u003Ccode class=\"badge bg-soft-danger text-danger\">rates.add()\u003C\u002Fcode> do not automatically include handling fees or flat rates from other categories. Use the handling\u002Fflat rate helpers (below) if you need to include them.\u003C\u002Fp>\u003C\u002Fsection>\u003Csection id=\"filtering-rates\" data-title=\"Filtering rates\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"filtering-rates\">Filtering rates\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.filter(selector)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>Returns a new Rates object containing only matching rates. The original collection is not modified. The selector can be:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>A \u003Cstrong>number\u003C\u002Fstrong> — matches by \u003Ccode class=\"badge bg-soft-danger text-danger\">service_id\u003C\u002Fcode>\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>A \u003Cstrong>string\u003C\u002Fstrong> — matches against \u003Ccode class=\"badge bg-soft-danger text-danger\">method\u003C\u002Fcode> and \u003Ccode class=\"badge bg-soft-danger text-danger\">service_name\u003C\u002Fcode> (case insensitive)\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>An \u003Cstrong>array of numbers\u003C\u002Fstrong> — matches multiple \u003Ccode class=\"badge bg-soft-danger text-danger\">service_id\u003C\u002Fcode> values\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\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>rates.filter(10001).price(0);\nrates.filter(&#x27;fedex&#x27;).hide();\nrates.filter([10001, 10002]).price(&#x27;+5&#x27;);\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\u003Csection id=\"checking-if-rates-exist\" data-title=\"Checking if rates exist\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"checking-if-rates-exist\">Checking if rates exist\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.exists([selector])\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>Returns \u003Ccode class=\"badge bg-soft-danger text-danger\">true\u003C\u002Fcode> if rates exist. If a selector is provided, returns \u003Ccode class=\"badge bg-soft-danger text-danger\">true\u003C\u002Fcode> only if matching rates exist. Selector works the same as \u003Ccode class=\"badge bg-soft-danger text-danger\">filter()\u003C\u002Fcode>.\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 (!rates.exists()) {\n  rates.add(10001, 15, &#x27;&#x27;, &#x27;Fallback Rate&#x27;);\n}\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\u003Csection id=\"showing-and-hiding-rates\" data-title=\"Showing and hiding rates\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"showing-and-hiding-rates\">Showing and hiding rates\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.hide()\u003C\u002Fcode> — hides the matched rates from the customer. Hidden rates remain in the collection and can still be filtered or shown later.\u003C\u002Fp>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.show()\u003C\u002Fcode> — makes previously hidden rates visible again.\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>rates.filter(&#x27;usps&#x27;).hide();\nrates.filter(10001).show();\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\u003Csection id=\"modifying-prices\" data-title=\"Modifying prices\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"modifying-prices\">Modifying prices\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.price(modifier)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>Sets or adjusts the price of matched rates. The modifier can be:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>A \u003Cstrong>number\u003C\u002Fstrong> — sets the price to that exact value\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>A \u003Cstrong>string\u003C\u002Fstrong> with an operator prefix:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">&#039;+5&#039;\u003C\u002Fcode> — adds 5 to the current price\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">&#039;-5&#039;\u003C\u002Fcode> — subtracts 5\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">&#039;*2&#039;\u003C\u002Fcode> — multiplies by 2\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">&#039;\u002F2&#039;\u003C\u002Fcode> — divides by 2\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">&#039;=15&#039;\u003C\u002Fcode> — sets to exactly 15 (same as passing a number)\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">&#039;+20%&#039;\u003C\u002Fcode> — adds 20% of the current price\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">&#039;-20%&#039;\u003C\u002Fcode> — subtracts 20% of the current price\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Fli>\u003C\u002Ful>\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>rates.filter(&#x27;usps&#x27;).price(&#x27;+2.50&#x27;);\nrates.filter(10001).price(0);\nrates.filter(&#x27;fedex&#x27;).price(&#x27;-10%&#x27;);\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\u003Csection id=\"modifying-labels\" data-title=\"Modifying labels\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"modifying-labels\">Modifying labels\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.method(string)\u003C\u002Fcode> — sets the carrier\u002Fmethod name for matched rates.\u003C\u002Fp>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.service(string)\u003C\u002Fcode> — sets the service name for matched rates.\u003C\u002Fp>\u003Cp>When called without an argument inside an \u003Ccode class=\"badge bg-soft-danger text-danger\">.each()\u003C\u002Fcode> callback, these return the current value.\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>rates.filter(&#x27;usps&#x27;).method(&#x27;US Postal Service&#x27;);\nrates.filter(10001).service(&#x27;Economy&#x27;);\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cp>Note: HTML in method or service strings is not currently supported.\u003C\u002Fp>\u003C\u002Fsection>\u003Csection id=\"iterating-over-rates\" data-title=\"Iterating over rates\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"iterating-over-rates\">Iterating over rates\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.each(fn)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>Calls \u003Ccode class=\"badge bg-soft-danger text-danger\">fn\u003C\u002Fcode> for each matched rate. Inside the callback, \u003Ccode class=\"badge bg-soft-danger text-danger\">this\u003C\u002Fcode> refers to the individual rate and exposes \u003Ccode class=\"badge bg-soft-danger text-danger\">.price()\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">.method()\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">.service()\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">.hide()\u003C\u002Fcode>, and \u003Ccode class=\"badge bg-soft-danger text-danger\">.show()\u003C\u002Fcode>.\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>rates.filter(&#x27;fedex&#x27;).each(function() {\n  this.service(this.service() + &#x27; (Signature Required)&#x27;);\n});\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\u003Csection id=\"sorting\" data-title=\"Sorting\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"sorting\">Sorting\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.sort()\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>Sorts matched rates by price (ascending). Note that Foxy always re sorts rates ascending for display regardless of your code&#039;s ordering, so this is mainly useful if you need sorted iteration.\u003C\u002Fp>\u003C\u002Fsection>\u003Csection id=\"handling-fees-and-flat-rates\" data-title=\"Handling fees and flat rates\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"handling-fees-and-flat-rates\">Handling fees and flat rates\u003C\u002Fh2>\u003Cp>Custom rates added via \u003Ccode class=\"badge bg-soft-danger text-danger\">rates.add()\u003C\u002Fcode> do not automatically include handling fees or flat rates from other categories in the cart. These helpers let you add or remove them:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.addHandling()\u003C\u002Fcode> — adds handling fees from other categories to matched rates\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.addFlatRate()\u003C\u002Fcode> — adds flat rate fees from other categories\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.addHandlingAndFlatRate()\u003C\u002Fcode> — adds both\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.removeHandling()\u003C\u002Fcode> — removes handling fees from matched rates\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.removeFlatRate()\u003C\u002Fcode> — removes flat rate fees\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.removeHandlingAndFlatRate()\u003C\u002Fcode> — removes both\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Fsection>\u003Csection id=\"errors-and-resets\" data-title=\"Errors and resets\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"errors-and-resets\">Errors and resets\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.error(message)\u003C\u002Fcode> — sets an error message. If set, the error is displayed to the customer instead of any rates (error takes precedence).\u003C\u002Fp>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.reset()\u003C\u002Fcode> — clears all rates and any error message.\u003C\u002Fp>\u003C\u002Fsection>\u003Csection id=\"the-cart-object\" data-title=\"The cart object\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"the-cart-object\">The cart object\u003C\u002Fh2>\u003Cp>The \u003Ccode class=\"badge bg-soft-danger text-danger\">cart\u003C\u002Fcode> object available in Custom Shipping Code contains the same payload sent to the Custom Shipping Endpoint. See the [Shipping Payload Reference] for the full structure, field descriptions, and common access patterns.\u003C\u002Fp>\u003C\u002Fsection>",[933,936,938,940,942,944,946,948,950,952,954,956],{"id":934,"title":332,"level":935},"overview","H2",{"id":937,"title":351,"level":935},"adding-rates",{"id":939,"title":403,"level":935},"filtering-rates",{"id":941,"title":487,"level":935},"checking-if-rates-exist",{"id":943,"title":526,"level":935},"showing-and-hiding-rates",{"id":945,"title":554,"level":935},"modifying-prices",{"id":947,"title":679,"level":935},"modifying-labels",{"id":949,"title":723,"level":935},"iterating-over-rates",{"id":951,"title":784,"level":935},"sorting",{"id":953,"title":801,"level":935},"handling-fees-and-flat-rates",{"id":955,"title":884,"level":935},"errors-and-resets",{"id":957,"title":907,"level":935},"the-cart-object",[959],{"type":960,"content":961},"html","\u003Ch2>Overview\u003C\u002Fh2>\u003Cp>The \u003Ccode class=\"badge bg-soft-danger text-danger\">rates\u003C\u002Fcode> object is the primary interface for manipulating shipping rates in Custom Shipping Code. It&#039;s pre populated with any rates returned from carriers or the custom endpoint, and all methods are chainable (unless they return a value).\u003C\u002Fp>\u003Ch2>Adding rates\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.add(id, price, method, service_name)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>Adds a new rate. \u003Ccode class=\"badge bg-soft-danger text-danger\">id\u003C\u002Fcode> must be 10000 or higher (if you pass a lower number, 10000 is added automatically). At least one of \u003Ccode class=\"badge bg-soft-danger text-danger\">method\u003C\u002Fcode> or \u003Ccode class=\"badge bg-soft-danger text-danger\">service_name\u003C\u002Fcode> is required. Pass an empty string for the one you don&#039;t need.\u003C\u002Fp>\u003Cpre>\u003Ccode>rates.add(10001, 5.99, &#039;FoxyPost&#039;, &#039;Standard&#039;);\nrates.add(10002, 0, &#039;&#039;, &#039;Free Shipping&#039;);\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Custom rates added with \u003Ccode class=\"badge bg-soft-danger text-danger\">rates.add()\u003C\u002Fcode> do not automatically include handling fees or flat rates from other categories. Use the handling\u002Fflat rate helpers (below) if you need to include them.\u003C\u002Fp>\u003Ch2>Filtering rates\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.filter(selector)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>Returns a new Rates object containing only matching rates. The original collection is not modified. The selector can be:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>A \u003Cstrong>number\u003C\u002Fstrong> — matches by \u003Ccode class=\"badge bg-soft-danger text-danger\">service_id\u003C\u002Fcode>\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>A \u003Cstrong>string\u003C\u002Fstrong> — matches against \u003Ccode class=\"badge bg-soft-danger text-danger\">method\u003C\u002Fcode> and \u003Ccode class=\"badge bg-soft-danger text-danger\">service_name\u003C\u002Fcode> (case insensitive)\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>An \u003Cstrong>array of numbers\u003C\u002Fstrong> — matches multiple \u003Ccode class=\"badge bg-soft-danger text-danger\">service_id\u003C\u002Fcode> values\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Cpre>\u003Ccode>rates.filter(10001).price(0);\nrates.filter(&#039;fedex&#039;).hide();\nrates.filter([10001, 10002]).price(&#039;+5&#039;);\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2>Checking if rates exist\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.exists([selector])\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>Returns \u003Ccode class=\"badge bg-soft-danger text-danger\">true\u003C\u002Fcode> if rates exist. If a selector is provided, returns \u003Ccode class=\"badge bg-soft-danger text-danger\">true\u003C\u002Fcode> only if matching rates exist. Selector works the same as \u003Ccode class=\"badge bg-soft-danger text-danger\">filter()\u003C\u002Fcode>.\u003C\u002Fp>\u003Cpre>\u003Ccode>if (!rates.exists()) {\n  rates.add(10001, 15, &#039;&#039;, &#039;Fallback Rate&#039;);\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2>Showing and hiding rates\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.hide()\u003C\u002Fcode> — hides the matched rates from the customer. Hidden rates remain in the collection and can still be filtered or shown later.\u003C\u002Fp>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.show()\u003C\u002Fcode> — makes previously hidden rates visible again.\u003C\u002Fp>\u003Cpre>\u003Ccode>rates.filter(&#039;usps&#039;).hide();\nrates.filter(10001).show();\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2>Modifying prices\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.price(modifier)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>Sets or adjusts the price of matched rates. The modifier can be:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>A \u003Cstrong>number\u003C\u002Fstrong> — sets the price to that exact value\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>A \u003Cstrong>string\u003C\u002Fstrong> with an operator prefix:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">&#039;+5&#039;\u003C\u002Fcode> — adds 5 to the current price\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">&#039;-5&#039;\u003C\u002Fcode> — subtracts 5\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">&#039;*2&#039;\u003C\u002Fcode> — multiplies by 2\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">&#039;\u002F2&#039;\u003C\u002Fcode> — divides by 2\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">&#039;=15&#039;\u003C\u002Fcode> — sets to exactly 15 (same as passing a number)\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">&#039;+20%&#039;\u003C\u002Fcode> — adds 20% of the current price\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">&#039;-20%&#039;\u003C\u002Fcode> — subtracts 20% of the current price\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Fli>\u003C\u002Ful>\u003Cpre>\u003Ccode>rates.filter(&#039;usps&#039;).price(&#039;+2.50&#039;);\nrates.filter(10001).price(0);\nrates.filter(&#039;fedex&#039;).price(&#039;-10%&#039;);\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2>Modifying labels\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.method(string)\u003C\u002Fcode> — sets the carrier\u002Fmethod name for matched rates.\u003C\u002Fp>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.service(string)\u003C\u002Fcode> — sets the service name for matched rates.\u003C\u002Fp>\u003Cp>When called without an argument inside an \u003Ccode class=\"badge bg-soft-danger text-danger\">.each()\u003C\u002Fcode> callback, these return the current value.\u003C\u002Fp>\u003Cpre>\u003Ccode>rates.filter(&#039;usps&#039;).method(&#039;US Postal Service&#039;);\nrates.filter(10001).service(&#039;Economy&#039;);\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Note: HTML in method or service strings is not currently supported.\u003C\u002Fp>\u003Ch2>Iterating over rates\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.each(fn)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>Calls \u003Ccode class=\"badge bg-soft-danger text-danger\">fn\u003C\u002Fcode> for each matched rate. Inside the callback, \u003Ccode class=\"badge bg-soft-danger text-danger\">this\u003C\u002Fcode> refers to the individual rate and exposes \u003Ccode class=\"badge bg-soft-danger text-danger\">.price()\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">.method()\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">.service()\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">.hide()\u003C\u002Fcode>, and \u003Ccode class=\"badge bg-soft-danger text-danger\">.show()\u003C\u002Fcode>.\u003C\u002Fp>\u003Cpre>\u003Ccode>rates.filter(&#039;fedex&#039;).each(function() {\n  this.service(this.service() + &#039; (Signature Required)&#039;);\n});\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2>Sorting\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.sort()\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>Sorts matched rates by price (ascending). Note that Foxy always re sorts rates ascending for display regardless of your code&#039;s ordering, so this is mainly useful if you need sorted iteration.\u003C\u002Fp>\u003Ch2>Handling fees and flat rates\u003C\u002Fh2>\u003Cp>Custom rates added via \u003Ccode class=\"badge bg-soft-danger text-danger\">rates.add()\u003C\u002Fcode> do not automatically include handling fees or flat rates from other categories in the cart. These helpers let you add or remove them:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.addHandling()\u003C\u002Fcode> — adds handling fees from other categories to matched rates\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.addFlatRate()\u003C\u002Fcode> — adds flat rate fees from other categories\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.addHandlingAndFlatRate()\u003C\u002Fcode> — adds both\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.removeHandling()\u003C\u002Fcode> — removes handling fees from matched rates\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.removeFlatRate()\u003C\u002Fcode> — removes flat rate fees\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.removeHandlingAndFlatRate()\u003C\u002Fcode> — removes both\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>Errors and resets\u003C\u002Fh2>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.error(message)\u003C\u002Fcode> — sets an error message. If set, the error is displayed to the customer instead of any rates (error takes precedence).\u003C\u002Fp>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">rates.reset()\u003C\u002Fcode> — clears all rates and any error message.\u003C\u002Fp>\u003Ch2>The cart object\u003C\u002Fh2>\u003Cp>The \u003Ccode class=\"badge bg-soft-danger text-danger\">cart\u003C\u002Fcode> object available in Custom Shipping Code contains the same payload sent to the Custom Shipping Endpoint. See the [Shipping Payload Reference] for the full structure, field descriptions, and common access patterns.\u003C\u002Fp>",{"name":963,"created_at":964,"published_at":965,"updated_at":966,"id":967,"uuid":47,"content":968,"slug":48,"full_slug":48,"sort_by_date":59,"position":1147,"tag_list":1148,"is_startpage":24,"parent_id":59,"meta_data":59,"group_id":1149,"first_published_at":1150,"release_id":59,"lang":65,"path":59,"alternates":1151,"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":969,"_uid":972,"title":973,"action":974,"fields":975,"method":1123,"columns":1124,"subtitle":1138,"component":48,"button_text":1144,"submit_title":1145,"submit_subtitle":1146},{"_uid":970,"title":963,"plugin":971,"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",[976,981,985,1094,1097,1102,1117],{"_uid":977,"name":978,"type":333,"label":979,"options":13,"required":33,"component":980,"placeholder":13},"9a70b226-2036-4f90-a052-b3efa61c5896","name","Name","form___field",{"_uid":982,"name":983,"type":983,"label":984,"options":13,"required":33,"component":980,"placeholder":13},"86ba35be-ff43-4a28-8633-14052a8f6622","email","Email Address",{"_uid":986,"name":987,"type":988,"label":989,"options":990,"required":33,"component":980,"conditions":991,"placeholder":13},"3f827475-492c-4f97-aa1e-2386ac263b6c","topic","select","Topic","Presales, Support, Billing, Partnerships, Order Enquiry, Other",[992,1048,1058,1065,1073,1081,1087],{"_uid":993,"equals":994,"fields":995,"component":1047},"e21d97dd-e68e-4fa6-ba97-bc40f3041dde","Order Enquiry",[996],{"_uid":997,"body":998,"type":1045,"title":13,"component":1046},"b64992bc-6d53-48b8-b7a0-d81e5a062e50",{"type":324,"content":999},[1000],{"type":335,"content":1001},[1002,1004,1012,1014,1016,1017,1021,1023,1028,1036,1038,1043],{"text":1003,"type":333},"We are ",{"text":1005,"type":333,"marks":1006},"Foxy.io",[1007],{"type":1008,"attrs":1009},"link",{"href":1010,"uuid":59,"anchor":59,"custom":1011,"target":59,"linktype":31},"http:\u002F\u002FFoxy.io",{},{"text":1013,"type":333},", 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":1015},"hard_break",{"type":1015},{"text":1018,"type":333,"marks":1019},"NOTE:",[1020],{"type":431},{"text":1022,"type":333}," We are ",{"text":1024,"type":333,"marks":1025},"not ",[1026],{"type":1027},"italic",{"text":1029,"type":333,"marks":1030},"Foxy.in",[1031,1035],{"type":1008,"attrs":1032},{"href":1033,"uuid":59,"anchor":59,"custom":1034,"target":59,"linktype":31},"http:\u002F\u002FFoxy.in",{},{"type":1027},{"text":1037,"type":333},". We are not in any way affiliated with ",{"text":1029,"type":333,"marks":1039},[1040],{"type":1008,"attrs":1041},{"href":1033,"uuid":59,"anchor":59,"custom":1042,"target":59,"linktype":31},{},{"text":1044,"type":333},", and cannot help in any way with your order from that website.","danger","global___alert","form___condition",{"_uid":1049,"equals":1050,"fields":1051,"component":1047},"8765c3e1-25cf-44aa-b8ea-fc6094acf9c3","Presales",[1052],{"_uid":1053,"name":1054,"type":1055,"label":13,"options":13,"required":24,"component":980,"conditions":1056,"placeholder":13,"default_value":1057},"cf464f8e-d643-4f6e-af29-d3abffaf7380","department_email_address","hidden",[],"hello@foxy.io",{"_uid":1059,"equals":208,"fields":1060,"component":1047},"4007b6d8-77e5-421d-bd1e-6f336dd853fb",[1061],{"_uid":1062,"name":1054,"type":1055,"label":13,"options":13,"required":24,"component":980,"conditions":1063,"placeholder":13,"default_value":1064},"7b4c6aa5-a68c-45e0-9ce1-0a36af10c0c2",[],"help@foxy.io",{"_uid":1066,"equals":1067,"fields":1068,"component":1047},"1dbb8f11-613d-43cd-9e09-1b94f6e19219","Billing",[1069],{"_uid":1070,"name":1054,"type":1055,"label":13,"options":13,"required":24,"component":980,"conditions":1071,"placeholder":13,"default_value":1072},"a0ac0d1b-bc4f-4a6c-a682-581d450b0b73",[],"help+billing@foxy.io",{"_uid":1074,"equals":1075,"fields":1076,"component":1047},"a0a53a50-7172-4a29-ba58-181e38874e12","Partnerships",[1077],{"_uid":1078,"name":1054,"type":1055,"label":13,"options":13,"required":24,"component":980,"conditions":1079,"placeholder":13,"default_value":1080},"7aa011d9-f374-4aed-b5a5-929b54aaf152",[],"partners@foxy.io",{"_uid":1082,"equals":994,"fields":1083,"component":1047},"a4cd431f-25d5-41c7-bfdc-02c908c8fb47",[1084],{"_uid":1085,"name":1054,"type":1055,"label":13,"options":13,"required":24,"component":980,"conditions":1086,"placeholder":13,"default_value":1057},"f5d52168-d6ae-451b-94ee-2ced1cbd28ad",[],{"_uid":1088,"equals":1089,"fields":1090,"component":1047},"25aba1ed-eb41-4bbc-aa89-f7a7167ea86e","Other",[1091],{"_uid":1092,"name":1054,"type":1055,"label":13,"options":13,"required":24,"component":980,"conditions":1093,"placeholder":13,"default_value":1057},"f40dfaef-c203-4b71-bf4e-e1b43cef192b",[],{"_uid":1095,"component":1096},"e9c53a05-f40a-4510-aaf8-bc072a235a0c","form___subject",{"_uid":1098,"name":1099,"type":1100,"label":1101,"options":13,"required":33,"component":980,"placeholder":13},"a4c4d385-fff4-4978-99fb-b68cfea623d6","message","textarea","Message",{"_uid":1103,"name":1104,"type":988,"label":1105,"options":1106,"required":33,"component":980,"conditions":1107,"placeholder":13},"8a3c9f85-f438-427d-9c7a-d7b295a14b5b","existing_user","Are you an existing user?","No, Yes",[1108],{"_uid":1109,"equals":1110,"fields":1111,"component":1047},"115933d6-262a-4b59-8fa8-579c5ad73de1","Yes",[1112],{"_uid":1113,"name":1114,"type":333,"label":1115,"options":13,"required":33,"component":980,"conditions":1116,"placeholder":13},"44b6ff23-98f0-4e95-b7f5-c23e06415c2d","subdomain","Store Subdomain",[],{"_uid":1118,"name":1119,"type":988,"label":1120,"options":1121,"required":33,"component":980,"conditions":1122,"placeholder":13},"922a5cef-3af2-4113-8855-36c7910e3ee3","user_type","What type of user are you?","Developer, Designer, Merchant",[],"POST",[1125],{"_uid":1126,"text":1127,"title":1136,"component":1137},"7323b90d-a93a-4bf1-baa9-20d0b7ead61b",{"type":324,"content":1128},[1129],{"type":335,"content":1130},[1131,1133,1134],{"text":1132,"type":333},"855.369.9227",{"type":1015},{"text":1135,"type":333},"9:30am-6pm Central M-F","Pre-sales, Sales, & Partnerships","contact___footer_column",{"type":324,"content":1139},[1140],{"type":335,"content":1141},[1142],{"text":1143,"type":333},"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,1153,1180],{"name":1154,"created_at":1155,"published_at":1156,"updated_at":1157,"id":1158,"uuid":1159,"content":1160,"slug":1174,"full_slug":1175,"sort_by_date":59,"position":1176,"tag_list":1177,"is_startpage":24,"parent_id":310,"meta_data":59,"group_id":1178,"first_published_at":1156,"release_id":59,"lang":65,"path":59,"alternates":1179,"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":1161,"icon":1162,"name":1154,"guides":1163,"summary":1164,"category":13,"component":297,"blog_posts":1165,"content_hub":24,"icon_custom":1166,"case_studies":1167,"faq_sections":1168,"help_articles":1169,"featured_guides":1170,"mailbox_category":13,"featured_articles":1171,"featured_blog_posts":1172,"featured_case_studies":1173},"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":1181,"created_at":1182,"published_at":1183,"updated_at":1184,"id":1185,"uuid":921,"content":1186,"slug":1199,"full_slug":1200,"sort_by_date":59,"position":1201,"tag_list":1202,"is_startpage":24,"parent_id":310,"meta_data":59,"group_id":1203,"first_published_at":1204,"release_id":59,"lang":65,"path":59,"alternates":1205,"default_full_slug":59,"translated_slugs":59},"Custom Shipping Code","2026-05-27T16:30:46.528Z","2026-06-24T21:24:10.404Z","2026-06-24T21:24:10.422Z",181083531435477,{"_uid":1187,"icon":13,"name":1181,"type":1188,"pinned":24,"summary":1189,"category":1159,"component":297,"blog_posts":1190,"icon_custom":1191,"case_studies":1193,"faq_sections":1194,"featured_guides":1195,"mailbox_category":13,"featured_articles":1196,"featured_blog_posts":1197,"featured_case_studies":1198},"31421cb4-545f-42da-a2f6-c34d68e7f11f","simple","How to add, modify, or remove shipping rates with JavaScript in the Foxy admin.",[],{"id":59,"alt":59,"name":13,"focus":59,"title":59,"source":59,"filename":13,"copyright":59,"fieldtype":81,"meta_data":1192},{},[],[],[],[],[],[],"custom-shipping-code","help\u002Fcategories\u002Fcustom-shipping-code",-290,[],"d9babca5-97b7-4d3f-b3d4-3f2de363a7b9","2026-05-28T20:17:53.353Z",[],{},1784562227849]