[{"data":1,"prerenderedAt":1654},["ShallowReactive",2],{"header:help":3,"footer:default":67,"story:navigation\u002Fsearch:help":250,"story:help\u002Fcategories":288,"story:help\u002Farticles\u002Fsync-users-between-foxy-and-an-external-system":314,"no-guide:sync-users-between-foxy-and-an-external-system":59,"article:\u002Fhelp\u002Farticles\u002Fsync-users-between-foxy-and-an-external-system":1422,"story:contact":1437,"help:tree:cad13f6a-34b0-4b90-8df5-d48415406e11":1626,"_apollo:default":1653},{"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":1415,"full_slug":1416,"sort_by_date":59,"position":1417,"tag_list":1418,"is_startpage":24,"parent_id":1419,"meta_data":59,"group_id":1420,"first_published_at":317,"release_id":59,"lang":65,"path":59,"alternates":1421,"default_full_slug":59,"translated_slugs":59},"Sync Users Between Foxy and an External System","2026-06-04T21:30:52.706Z","2026-06-05T15:42:26.620Z","2026-06-05T15:42:26.638Z",183988439934898,"cad13f6a-34b0-4b90-8df5-d48415406e11",{"_uid":322,"body":323,"name":315,"image":1411,"pinned":24,"summary":13,"category":1413,"component":266,"related_articles":1414},"d9fe7767-7332-423a-b843-1280c81a5d23",{"type":324,"content":325},"doc",[326,359,366,385,397,403,419,1352,1364,1366,1385,1392],{"type":327,"attrs":328,"content":329},"paragraph",{"textAlign":59},[330,333,341,343,349,351,357],{"text":331,"type":332},"Because Foxy was built from the ground up to augment and not replace external systems, it is a common occurrence that Foxy customer records will need to be created or updated from an external system, or that Foxy customers will need to automatically create users in external systems (like a CMS or CRM). Typically an integration like this will primarily use the ","text",{"text":334,"type":332,"marks":335},"JSON webhook",[336],{"type":337,"attrs":338},"link",{"href":339,"uuid":59,"anchor":59,"target":340,"linktype":31},"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fwebhooks#json_webhook","_self",{"text":342,"type":332}," and ",{"text":344,"type":332,"marks":345},"the API",[346],{"type":337,"attrs":347},{"href":348,"uuid":59,"anchor":59,"target":340,"linktype":31},"https:\u002F\u002Fapi.foxycart.com\u002Fdocs",{"text":350,"type":332}," to create and sync users, and ",{"text":352,"type":332,"marks":353},"Single Sign-On (SSO)",[354],{"type":337,"attrs":355},{"href":356,"uuid":59,"anchor":59,"target":59,"linktype":31},"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fsso",{"text":358,"type":332}," to make the customer checkout experience seamless.",{"type":360,"attrs":361,"content":363},"heading",{"level":362,"textAlign":59},2,[364],{"text":365,"type":332},"Customer Passwords",{"type":327,"attrs":367,"content":368},{"textAlign":59},[369,371,377,379,383],{"text":370,"type":332},"While the possibilities for this type of synchronization are near limitless, the single most important thing is usually the customer's password. Foxy customer passwords are returned by the JSON webhook and the API as ",{"text":372,"type":332,"marks":373},"hashes",[374],{"type":337,"attrs":375},{"href":376,"uuid":59,"anchor":59,"target":59,"linktype":31},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHash_function",{"text":378,"type":332},", and not the actual cleartext password. While the initial user creation is generally straightforward it can get tricky to maintain sync when passwords are reset, so if you tackle an advanced integration you must ensure that any and all password resetting functionality on your systems simultaneously updates the Foxy customer record through ",{"text":344,"type":332,"marks":380},[381],{"type":337,"attrs":382},{"href":348,"uuid":59,"anchor":59,"target":340,"linktype":31},{"text":384,"type":332},".",{"type":327,"attrs":386,"content":387},{"textAlign":59},[388,390,395],{"text":389,"type":332},"Password hashes are represented in the API and JSON webhook as hexadecimal strings, for example “",{"text":391,"type":332,"marks":392},"2e29f4fa2efb67dc28860abf",[393],{"type":394},"code",{"text":396,"type":332},"”. Depending on your library's hash functions, you may need to convert the output of the hash function to a hexadecimal string in order to compare passwords. Any “salt” value generated by Foxy is a random string of letters and numbers.",{"type":360,"attrs":398,"content":400},{"level":399,"textAlign":59},3,[401],{"text":402,"type":332},"Hashing Methods",{"type":327,"attrs":404,"content":405},{"textAlign":59},[406,408,412,414,417],{"text":407,"type":332},"Foxy currently supports the following hashing methods (in alphabetical order, and in PHP pseudocode, using ",{"text":409,"type":332,"marks":410},"$",[411],{"type":394},{"text":413,"type":332}," to denote a variable, ",{"text":384,"type":332,"marks":415},[416],{"type":394},{"text":418,"type":332}," to denote concatenation, and a single quote to encapsulate a string):",{"type":420,"content":421},"table",[422,461,541,608,640,661,682,722,764,785,825,856,894,964,1045,1114,1152,1204,1235,1266,1331],{"type":423,"content":424},"tableRow",[425,435],{"type":426,"attrs":427,"content":429},"tableCell",{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},1,[430],{"type":327,"attrs":431,"content":432},{"textAlign":59},[433],{"text":434,"type":332},"Argon2id",{"type":426,"attrs":436,"content":437},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[438,452],{"type":327,"attrs":439,"content":440},{"textAlign":59},[441,446,448],{"text":442,"type":332,"marks":443},"Method:",[444],{"type":445},"bold",{"text":447,"type":332}," ",{"text":449,"type":332,"marks":450},"argon2id",[451],{"type":394},{"type":327,"attrs":453,"content":454},{"textAlign":59},[455,459],{"text":456,"type":332,"marks":457},"Notes:",[458],{"type":445},{"text":460,"type":332}," It will use the default configuration options when generating the hash",{"type":423,"content":462},[463,471],{"type":426,"attrs":464,"content":465},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[466],{"type":327,"attrs":467,"content":468},{"textAlign":59},[469],{"text":470,"type":332},"BCrypt (with cost)",{"type":426,"attrs":472,"content":473},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[474,485,494,516,523],{"type":327,"attrs":475,"content":476},{"textAlign":59},[477,480,481],{"text":442,"type":332,"marks":478},[479],{"type":445},{"text":447,"type":332},{"text":482,"type":332,"marks":483},"bcrypt",[484],{"type":394},{"type":327,"attrs":486,"content":487},{"textAlign":59},[488,492],{"text":489,"type":332,"marks":490},"Configuration:",[491],{"type":445},{"text":493,"type":332}," The cost, default 14",{"type":327,"attrs":495,"content":496},{"textAlign":59},[497,500,501,508,510,514],{"text":456,"type":332,"marks":498},[499],{"type":445},{"text":447,"type":332},{"text":502,"type":332,"marks":503},"This is the recommended hashing method.",[504],{"type":505,"attrs":506},"textStyle",{"color":507},"inherit",{"text":509,"type":332}," It will generate the standard ",{"text":511,"type":332,"marks":512},"$2y$",[513],{"type":394},{"text":515,"type":332}," crypt format, which is always 60 characters wide.",{"type":327,"attrs":517,"content":518},{"textAlign":59},[519],{"text":520,"type":332,"marks":521},"Supported Systems:",[522],{"type":445},{"type":524,"content":525},"bullet_list",[526],{"type":527,"content":528},"list_item",[529],{"type":327,"attrs":530,"content":531},{"textAlign":59},[532,539],{"text":533,"type":332,"marks":534},"Drupal",[535],{"type":337,"attrs":536},{"href":537,"uuid":59,"anchor":59,"target":538,"linktype":31},"https:\u002F\u002Fdrupal.org\u002F","_blank",{"text":540,"type":332}," 10.1.0+ (use a cost of 10)",{"type":423,"content":542},[543,551],{"type":426,"attrs":544,"content":545},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[546],{"type":327,"attrs":547,"content":548},{"textAlign":59},[549],{"text":550,"type":332},"BCrypt (for WordPress 6.8+)",{"type":426,"attrs":552,"content":553},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[554,565,573,587,593],{"type":327,"attrs":555,"content":556},{"textAlign":59},[557,560,561],{"text":442,"type":332,"marks":558},[559],{"type":445},{"text":447,"type":332},{"text":562,"type":332,"marks":563},"bcrypt_wp",[564],{"type":394},{"type":327,"attrs":566,"content":567},{"textAlign":59},[568,571],{"text":489,"type":332,"marks":569},[570],{"type":445},{"text":572,"type":332}," The cost, default 10",{"type":327,"attrs":574,"content":575},{"textAlign":59},[576,579,581,585],{"text":456,"type":332,"marks":577},[578],{"type":445},{"text":580,"type":332}," It will generate the Wordpress specific ",{"text":582,"type":332,"marks":583},"$wp$2y$",[584],{"type":394},{"text":586,"type":332}," crypt format, which is always 63 characters wide.",{"type":327,"attrs":588,"content":589},{"textAlign":59},[590],{"text":520,"type":332,"marks":591},[592],{"type":445},{"type":524,"content":594},[595],{"type":527,"content":596},[597],{"type":327,"attrs":598,"content":599},{"textAlign":59},[600,606],{"text":601,"type":332,"marks":602},"Wordpress",[603],{"type":337,"attrs":604},{"href":605,"uuid":59,"anchor":59,"target":538,"linktype":31},"http:\u002F\u002Fwordpress.org\u002F",{"text":607,"type":332}," 6.8+",{"type":423,"content":609},[610,618],{"type":426,"attrs":611,"content":612},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[613],{"type":327,"attrs":614,"content":615},{"textAlign":59},[616],{"text":617,"type":332},"concrete5",{"type":426,"attrs":619,"content":620},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[621,632],{"type":327,"attrs":622,"content":623},{"textAlign":59},[624,627,628],{"text":442,"type":332,"marks":625},[626],{"type":445},{"text":447,"type":332},{"text":629,"type":332,"marks":630},"md5($password.':'.$salt)",[631],{"type":394},{"type":327,"attrs":633,"content":634},{"textAlign":59},[635,638],{"text":489,"type":332,"marks":636},[637],{"type":445},{"text":639,"type":332}," The configuration value is the one single salt used for all customer records, since Concrete5 uses a single site-wide salt.",{"type":423,"content":641},[642,650],{"type":426,"attrs":643,"content":644},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[645],{"type":327,"attrs":646,"content":647},{"textAlign":59},[648],{"text":649,"type":332},"Craft CMS",{"type":426,"attrs":651,"content":652},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[653],{"type":327,"attrs":654,"content":655},{"textAlign":59},[656,659],{"text":442,"type":332,"marks":657},[658],{"type":445},{"text":660,"type":332}," Specific to Craft.",{"type":423,"content":662},[663,671],{"type":426,"attrs":664,"content":665},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[666],{"type":327,"attrs":667,"content":668},{"textAlign":59},[669],{"text":670,"type":332},"ExpressionEngine",{"type":426,"attrs":672,"content":673},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[674],{"type":327,"attrs":675,"content":676},{"textAlign":59},[677,680],{"text":442,"type":332,"marks":678},[679],{"type":445},{"text":681,"type":332}," Specific to ExpressionEngine.",{"type":423,"content":683},[684,692],{"type":426,"attrs":685,"content":686},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[687],{"type":327,"attrs":688,"content":689},{"textAlign":59},[690],{"text":691,"type":332},"joomla",{"type":426,"attrs":693,"content":694},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[695,706,714],{"type":327,"attrs":696,"content":697},{"textAlign":59},[698,701,702],{"text":442,"type":332,"marks":699},[700],{"type":445},{"text":447,"type":332},{"text":703,"type":332,"marks":704},"md5($password.$salt).':'.$salt",[705],{"type":394},{"type":327,"attrs":707,"content":708},{"textAlign":59},[709,712],{"text":489,"type":332,"marks":710},[711],{"type":445},{"text":713,"type":332}," The length of the randomly generated salt.",{"type":327,"attrs":715,"content":716},{"textAlign":59},[717,720],{"text":456,"type":332,"marks":718},[719],{"type":445},{"text":721,"type":332}," This is the method used as of Joomla 1.0.13.",{"type":423,"content":723},[724,732],{"type":426,"attrs":725,"content":726},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[727],{"type":327,"attrs":728,"content":729},{"textAlign":59},[730],{"text":731,"type":332},"kohana3",{"type":426,"attrs":733,"content":734},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[735,750],{"type":327,"attrs":736,"content":737},{"textAlign":59},[738,741,743,749],{"text":442,"type":332,"marks":739},[740],{"type":445},{"text":742,"type":332}," The hashing methods in the ",{"text":744,"type":332,"marks":745},"Kohana3 Auth module",[746],{"type":337,"attrs":747},{"href":748,"uuid":59,"anchor":59,"target":538,"linktype":31},"https:\u002F\u002Fgithub.com\u002Fkohana\u002Fauth\u002Fblob\u002F3.0\u002Fmaster\u002Fclasses\u002Fkohana\u002Fauth.php",{"text":384,"type":332},{"type":327,"attrs":751,"content":752},{"textAlign":59},[753,756,758,762],{"text":489,"type":332,"marks":754},[755],{"type":445},{"text":757,"type":332}," The Auth module's ",{"text":759,"type":332,"marks":760},"$config['salt_pattern']",[761],{"type":394},{"text":763,"type":332}," value. FoxyCart defaults to the default value in the Auth module.",{"type":423,"content":765},[766,774],{"type":426,"attrs":767,"content":768},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[769],{"type":327,"attrs":770,"content":771},{"textAlign":59},[772],{"text":773,"type":332},"Magento MD5",{"type":426,"attrs":775,"content":776},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[777],{"type":327,"attrs":778,"content":779},{"textAlign":59},[780,783],{"text":442,"type":332,"marks":781},[782],{"type":445},{"text":784,"type":332}," For older Magento installations.",{"type":423,"content":786},[787,795],{"type":426,"attrs":788,"content":789},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[790],{"type":327,"attrs":791,"content":792},{"textAlign":59},[793],{"text":794,"type":332},"md5",{"type":426,"attrs":796,"content":797},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[798,809,817],{"type":327,"attrs":799,"content":800},{"textAlign":59},[801,804,805],{"text":442,"type":332,"marks":802},[803],{"type":445},{"text":447,"type":332},{"text":806,"type":332,"marks":807},"md5($password)",[808],{"type":394},{"type":327,"attrs":810,"content":811},{"textAlign":59},[812,815],{"text":489,"type":332,"marks":813},[814],{"type":445},{"text":816,"type":332}," n\u002Fa",{"type":327,"attrs":818,"content":819},{"textAlign":59},[820,823],{"text":456,"type":332,"marks":821},[822],{"type":445},{"text":824,"type":332}," This is provided for legacy purposes, as many older systems may use unsalted MD5 hashes. It is not recommended unless you need to sync with a system that requires it.",{"type":423,"content":826},[827,835],{"type":426,"attrs":828,"content":829},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[830],{"type":327,"attrs":831,"content":832},{"textAlign":59},[833],{"text":834,"type":332},"md5_salted_suffix",{"type":426,"attrs":836,"content":837},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[838,849],{"type":327,"attrs":839,"content":840},{"textAlign":59},[841,844,845],{"text":442,"type":332,"marks":842},[843],{"type":445},{"text":447,"type":332},{"text":846,"type":332,"marks":847},"md5($password.$salt)",[848],{"type":394},{"type":327,"attrs":850,"content":851},{"textAlign":59},[852,855],{"text":489,"type":332,"marks":853},[854],{"type":445},{"text":713,"type":332},{"type":423,"content":857},[858,866],{"type":426,"attrs":859,"content":860},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[861],{"type":327,"attrs":862,"content":863},{"textAlign":59},[864],{"text":865,"type":332},"md5_salted_suffix_2char",{"type":426,"attrs":867,"content":868},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[869,879,886],{"type":327,"attrs":870,"content":871},{"textAlign":59},[872,875,876],{"text":442,"type":332,"marks":873},[874],{"type":445},{"text":447,"type":332},{"text":846,"type":332,"marks":877},[878],{"type":394},{"type":327,"attrs":880,"content":881},{"textAlign":59},[882,885],{"text":489,"type":332,"marks":883},[884],{"type":445},{"text":816,"type":332},{"type":327,"attrs":887,"content":888},{"textAlign":59},[889,892],{"text":456,"type":332,"marks":890},[891],{"type":445},{"text":893,"type":332}," This really should only be used for synching to osCommerce prior to v2.3.",{"type":423,"content":895},[896,904],{"type":426,"attrs":897,"content":898},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[899],{"type":327,"attrs":900,"content":901},{"textAlign":59},[902],{"text":903,"type":332},"pbkdf2",{"type":426,"attrs":905,"content":906},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[907,915,950],{"type":327,"attrs":908,"content":909},{"textAlign":59},[910,913],{"text":442,"type":332,"marks":911},[912],{"type":445},{"text":914,"type":332}," Microsoft Identity v2 PBKDF2 implementation",{"type":327,"attrs":916,"content":917},{"textAlign":59},[918,921,923,927,929,933,934,938,939,943,945,949],{"text":489,"type":332,"marks":919},[920],{"type":445},{"text":922,"type":332}," Comma separated values for ",{"text":924,"type":332,"marks":925},"iterations",[926],{"type":394},{"text":928,"type":332},", ",{"text":930,"type":332,"marks":931},"key length",[932],{"type":394},{"text":928,"type":332},{"text":935,"type":332,"marks":936},"algorithm",[937],{"type":394},{"text":928,"type":332},{"text":940,"type":332,"marks":941},"salt size",[942],{"type":394},{"text":944,"type":332},". Defaults to ",{"text":946,"type":332,"marks":947},"1000, 32, sha1, 16",[948],{"type":394},{"text":384,"type":332},{"type":327,"attrs":951,"content":952},{"textAlign":59},[953,956,958,962],{"text":456,"type":332,"marks":954},[955],{"type":445},{"text":957,"type":332}," Returns a base64 encoded string, made up of a concatenated string using ",{"text":959,"type":332,"marks":960},"“\\0” . $salt . $hash",[961],{"type":394},{"text":963,"type":332},". No separate salt is returned, and the hash should be base64 decoded before encoding the concatenated string.",{"type":423,"content":965},[966,973],{"type":426,"attrs":967,"content":968},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[969],{"type":327,"attrs":970,"content":971},{"textAlign":59},[972],{"text":903,"type":332},{"type":426,"attrs":974,"content":975},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[976,992,1016,1024,1030],{"type":327,"attrs":977,"content":978},{"textAlign":59},[979,982,984,990],{"text":442,"type":332,"marks":980},[981],{"type":445},{"text":983,"type":332}," From ",{"text":985,"type":332,"marks":986},"MODX Revolution's code",[987],{"type":337,"attrs":988},{"href":989,"uuid":59,"anchor":59,"target":538,"linktype":31},"https:\u002F\u002Fgithub.com\u002Fmodxcms\u002Frevolution\u002Fblob\u002Fdevelop\u002Fcore\u002Fmodel\u002Fmodx\u002Fhashing\u002Fmodpbkdf2.class.php",{"text":991,"type":332},". Note that MODX no longer uses this method.",{"type":327,"attrs":993,"content":994},{"textAlign":59},[995,998,999,1002,1003,1006,1007,1010,1011,1015],{"text":489,"type":332,"marks":996},[997],{"type":445},{"text":922,"type":332},{"text":924,"type":332,"marks":1000},[1001],{"type":394},{"text":928,"type":332},{"text":930,"type":332,"marks":1004},[1005],{"type":394},{"text":928,"type":332},{"text":935,"type":332,"marks":1008},[1009],{"type":394},{"text":944,"type":332},{"text":1012,"type":332,"marks":1013},"1000, 32, sha256",[1014],{"type":394},{"text":384,"type":332},{"type":327,"attrs":1017,"content":1018},{"textAlign":59},[1019,1022],{"text":456,"type":332,"marks":1020},[1021],{"type":445},{"text":1023,"type":332}," Returns a base64 encoded hash, and uses a 32 character long salt",{"type":327,"attrs":1025,"content":1026},{"textAlign":59},[1027],{"text":520,"type":332,"marks":1028},[1029],{"type":445},{"type":524,"content":1031},[1032],{"type":527,"content":1033},[1034],{"type":327,"attrs":1035,"content":1036},{"textAlign":59},[1037,1043],{"text":1038,"type":332,"marks":1039},"MODX Revolution 2.x",[1040],{"type":337,"attrs":1041},{"href":1042,"uuid":59,"anchor":59,"target":538,"linktype":31},"http:\u002F\u002Fmodx.com\u002F",{"text":1044,"type":332}," (old default configuration; no longer default)",{"type":423,"content":1046},[1047,1055],{"type":426,"attrs":1048,"content":1049},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[1050],{"type":327,"attrs":1051,"content":1052},{"textAlign":59},[1053],{"text":1054,"type":332},"phpass",{"type":426,"attrs":1056,"content":1057},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[1058,1074,1088,1094],{"type":327,"attrs":1059,"content":1060},{"textAlign":59},[1061,1064,1066,1072],{"text":442,"type":332,"marks":1062},[1063],{"type":445},{"text":1065,"type":332}," Uses the ",{"text":1067,"type":332,"marks":1068},"phpass library",[1069],{"type":337,"attrs":1070},{"href":1071,"uuid":59,"anchor":59,"target":538,"linktype":31},"http:\u002F\u002Fwww.openwall.com\u002Fphpass\u002F",{"text":1073,"type":332}," in “portable” mode. (Portable mode is what most systems that use phpass default to.)",{"type":327,"attrs":1075,"content":1076},{"textAlign":59},[1077,1080,1082,1086],{"text":489,"type":332,"marks":1078},[1079],{"type":445},{"text":1081,"type":332}," The configuration value sets the iterations used to instantiate the ",{"text":1083,"type":332,"marks":1084},"PasswordHash",[1085],{"type":394},{"text":1087,"type":332}," class. Defaults to 8, which is what Wordpress and most other systems default to.",{"type":327,"attrs":1089,"content":1090},{"textAlign":59},[1091],{"text":520,"type":332,"marks":1092},[1093],{"type":445},{"type":524,"content":1095},[1096,1107],{"type":527,"content":1097},[1098],{"type":327,"attrs":1099,"content":1100},{"textAlign":59},[1101,1105],{"text":601,"type":332,"marks":1102},[1103],{"type":337,"attrs":1104},{"href":605,"uuid":59,"anchor":59,"target":538,"linktype":31},{"text":1106,"type":332}," 6.7 and older",{"type":527,"content":1108},[1109],{"type":327,"attrs":1110,"content":1111},{"textAlign":59},[1112],{"text":1113,"type":332},"osCommerce 2.3+",{"type":423,"content":1115},[1116,1124],{"type":426,"attrs":1117,"content":1118},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[1119],{"type":327,"attrs":1120,"content":1121},{"textAlign":59},[1122],{"text":1123,"type":332},"sha1",{"type":426,"attrs":1125,"content":1126},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[1127,1138,1145],{"type":327,"attrs":1128,"content":1129},{"textAlign":59},[1130,1133,1134],{"text":442,"type":332,"marks":1131},[1132],{"type":445},{"text":447,"type":332},{"text":1135,"type":332,"marks":1136},"sha1($password)",[1137],{"type":394},{"type":327,"attrs":1139,"content":1140},{"textAlign":59},[1141,1144],{"text":489,"type":332,"marks":1142},[1143],{"type":445},{"text":816,"type":332},{"type":327,"attrs":1146,"content":1147},{"textAlign":59},[1148,1151],{"text":456,"type":332,"marks":1149},[1150],{"type":445},{"text":824,"type":332},{"type":423,"content":1153},[1154,1162],{"type":426,"attrs":1155,"content":1156},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[1157],{"type":327,"attrs":1158,"content":1159},{"textAlign":59},[1160],{"text":1161,"type":332},"sha1_salted_suffix",{"type":426,"attrs":1163,"content":1164},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[1165,1176,1183,1189],{"type":327,"attrs":1166,"content":1167},{"textAlign":59},[1168,1171,1172],{"text":442,"type":332,"marks":1169},[1170],{"type":445},{"text":447,"type":332},{"text":1173,"type":332,"marks":1174},"sha1($password.$salt)",[1175],{"type":394},{"type":327,"attrs":1177,"content":1178},{"textAlign":59},[1179,1182],{"text":489,"type":332,"marks":1180},[1181],{"type":445},{"text":713,"type":332},{"type":327,"attrs":1184,"content":1185},{"textAlign":59},[1186],{"text":520,"type":332,"marks":1187},[1188],{"type":445},{"type":524,"content":1190},[1191],{"type":527,"content":1192},[1193],{"type":327,"attrs":1194,"content":1195},{"textAlign":59},[1196,1202],{"text":1197,"type":332,"marks":1198},"Silverstripe",[1199],{"type":337,"attrs":1200},{"href":1201,"uuid":59,"anchor":59,"target":538,"linktype":31},"http:\u002F\u002Fsilverstripe.org\u002F",{"text":1203,"type":332}," (default configuration)",{"type":423,"content":1205},[1206,1214],{"type":426,"attrs":1207,"content":1208},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[1209],{"type":327,"attrs":1210,"content":1211},{"textAlign":59},[1212],{"text":1213,"type":332},"sha256_salted_suffix",{"type":426,"attrs":1215,"content":1216},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[1217,1228],{"type":327,"attrs":1218,"content":1219},{"textAlign":59},[1220,1223,1224],{"text":442,"type":332,"marks":1221},[1222],{"type":445},{"text":447,"type":332},{"text":1225,"type":332,"marks":1226},"sha256($password.$salt)",[1227],{"type":394},{"type":327,"attrs":1229,"content":1230},{"textAlign":59},[1231,1234],{"text":489,"type":332,"marks":1232},[1233],{"type":445},{"text":713,"type":332},{"type":423,"content":1236},[1237,1245],{"type":426,"attrs":1238,"content":1239},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[1240],{"type":327,"attrs":1241,"content":1242},{"textAlign":59},[1243],{"text":1244,"type":332},"sha256_salted_prefix",{"type":426,"attrs":1246,"content":1247},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[1248,1259],{"type":327,"attrs":1249,"content":1250},{"textAlign":59},[1251,1254,1255],{"text":442,"type":332,"marks":1252},[1253],{"type":445},{"text":447,"type":332},{"text":1256,"type":332,"marks":1257},"sha256($salt.$password)",[1258],{"type":394},{"type":327,"attrs":1260,"content":1261},{"textAlign":59},[1262,1265],{"text":489,"type":332,"marks":1263},[1264],{"type":445},{"text":713,"type":332},{"type":423,"content":1267},[1268,1276],{"type":426,"attrs":1269,"content":1270},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[1271],{"type":327,"attrs":1272,"content":1273},{"textAlign":59},[1274],{"text":1275,"type":332},"drupal sha512",{"type":426,"attrs":1277,"content":1278},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[1279,1290,1298,1304,1317],{"type":327,"attrs":1280,"content":1281},{"textAlign":59},[1282,1285,1286],{"text":442,"type":332,"marks":1283},[1284],{"type":445},{"text":447,"type":332},{"text":1287,"type":332,"marks":1288},"sha512($salt.$password)^$iterations",[1289],{"type":394},{"type":327,"attrs":1291,"content":1292},{"textAlign":59},[1293,1296],{"text":489,"type":332,"marks":1294},[1295],{"type":445},{"text":1297,"type":332}," The iterations the password is stretched by.",{"type":327,"attrs":1299,"content":1300},{"textAlign":59},[1301],{"text":520,"type":332,"marks":1302},[1303],{"type":445},{"type":524,"content":1305},[1306],{"type":527,"content":1307},[1308],{"type":327,"attrs":1309,"content":1310},{"textAlign":59},[1311,1315],{"text":533,"type":332,"marks":1312},[1313],{"type":337,"attrs":1314},{"href":537,"uuid":59,"anchor":59,"target":538,"linktype":31},{"text":1316,"type":332}," 7+",{"type":327,"attrs":1318,"content":1319},{"textAlign":59},[1320,1323,1325,1329],{"text":456,"type":332,"marks":1321},[1322],{"type":445},{"text":1324,"type":332}," Beginning in v10.1.0, Drupal uses PHP's standard ",{"text":1326,"type":332,"marks":1327},"password_hash()",[1328],{"type":394},{"text":1330,"type":332}," function, which uses bcrypt, which we support and is detailed below.",{"type":423,"content":1332},[1333,1341],{"type":426,"attrs":1334,"content":1335},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[1336],{"type":327,"attrs":1337,"content":1338},{"textAlign":59},[1339],{"text":1340,"type":332},"Webvanta SHA1",{"type":426,"attrs":1342,"content":1343},{"colspan":428,"rowspan":428,"colwidth":59,"backgroundColor":59},[1344],{"type":327,"attrs":1345,"content":1346},{"textAlign":59},[1347,1350],{"text":442,"type":332,"marks":1348},[1349],{"type":445},{"text":1351,"type":332}," Specific to Webvanta.",{"type":327,"attrs":1353,"content":1354},{"textAlign":59},[1355,1357,1363],{"text":1356,"type":332},"If you need alternate hashing methods, please ",{"text":1358,"type":332,"marks":1359},"let us know",[1360],{"type":337,"attrs":1361},{"href":1362,"uuid":59,"anchor":59,"target":538,"linktype":31},"http:\u002F\u002Ffoxy.io\u002Fcontact",{"text":384,"type":332},{"type":1365},"horizontal_rule",{"type":327,"attrs":1367,"content":1368},{"textAlign":59},[1369,1371,1375,1377,1383],{"text":1370,"type":332},"Once the user creation and synchronization functionality is handled, ",{"text":352,"type":332,"marks":1372},[1373],{"type":337,"attrs":1374},{"href":356,"uuid":59,"anchor":59,"target":59,"linktype":31},{"text":1376,"type":332}," allows a customer who's already logged into the merchant's site to continue through to checkout with their user already loaded. This prevents users from needing to log in once to a site, then again on checkout. (SSO checkouts require the ",{"text":1378,"type":332,"marks":1379},"CSC",[1380],{"type":337,"attrs":1381},{"href":1382,"uuid":59,"anchor":59,"target":59,"linktype":31},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCard_Security_Code",{"text":1384,"type":332}," to be entered, in order to minimize the risk of a malicious user stealing a cookie and processing an order using saved payment information.)",{"type":360,"attrs":1386,"content":1387},{"level":399,"textAlign":59},[1388],{"text":1389,"type":332,"marks":1390},"Changing Hashing Methods",[1391],{"type":445},{"type":327,"attrs":1393,"content":1394},{"textAlign":59},[1395,1397,1401,1403,1409],{"text":1396,"type":332},"The customers hashing method is stored against their user record (which you can in turn access via the ",{"text":334,"type":332,"marks":1398},[1399],{"type":337,"attrs":1400},{"href":339,"uuid":59,"anchor":59,"target":340,"linktype":31},{"text":1402,"type":332}," and the ",{"text":1404,"type":332,"marks":1405},"API",[1406],{"type":337,"attrs":1407},{"href":1408,"uuid":59,"anchor":59,"target":59,"linktype":31},"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fapi",{"text":1410,"type":332}," as well), and that is the hashing method used to validate their password when they login. If you've changed the hashing method from one to another, any existing customers will be validated against their old hashing method on login, and then once they complete a checkout for your store their password will be rehashed with the new hashing method selected in your stores settings.",{"id":59,"alt":59,"name":13,"focus":59,"title":59,"source":59,"filename":13,"copyright":59,"fieldtype":81,"meta_data":1412},{},"28ceb72a-9aff-4499-a48e-7616f7d17033",[],"sync-users-between-foxy-and-an-external-system","help\u002Farticles\u002Fsync-users-between-foxy-and-an-external-system",-2010,[],2659,"b8555ab5-2b2d-4983-a51e-6e3c1dda14d9",[],{"html":1423,"sections":1424,"segments":1433},"\u003Cp>Because Foxy was built from the ground up to augment and not replace external systems, it is a common occurrence that Foxy customer records will need to be created or updated from an external system, or that Foxy customers will need to automatically create users in external systems (like a CMS or CRM). Typically an integration like this will primarily use the \u003Ca href=\"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fwebhooks#json_webhook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">JSON webhook\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fapi.foxycart.com\u002Fdocs\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">the API\u003C\u002Fa> to create and sync users, and \u003Ca href=\"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fsso\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Single Sign-On (SSO)\u003C\u002Fa> to make the customer checkout experience seamless.\u003C\u002Fp>\u003Csection id=\"customer-passwords\" data-title=\"Customer Passwords\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"customer-passwords\">Customer Passwords\u003C\u002Fh2>\u003Cp>While the possibilities for this type of synchronization are near limitless, the single most important thing is usually the customer&#039;s password. Foxy customer passwords are returned by the JSON webhook and the API as \u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHash_function\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">hashes\u003C\u002Fa>, and not the actual cleartext password. While the initial user creation is generally straightforward it can get tricky to maintain sync when passwords are reset, so if you tackle an advanced integration you must ensure that any and all password resetting functionality on your systems simultaneously updates the Foxy customer record through \u003Ca href=\"https:\u002F\u002Fapi.foxycart.com\u002Fdocs\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">the API\u003C\u002Fa>.\u003C\u002Fp>\u003Cp>Password hashes are represented in the API and JSON webhook as hexadecimal strings, for example “\u003Ccode class=\"badge bg-soft-danger text-danger\">2e29f4fa2efb67dc28860abf\u003C\u002Fcode>”. Depending on your library&#039;s hash functions, you may need to convert the output of the hash function to a hexadecimal string in order to compare passwords. Any “salt” value generated by Foxy is a random string of letters and numbers.\u003C\u002Fp>\u003C\u002Fsection>\u003Csection id=\"hashing-methods\" data-title=\"Hashing Methods\" data-title-node=\"H3\">\u003Ch3 data-anchor-id=\"hashing-methods\">Hashing Methods\u003C\u002Fh3>\u003Cp>Foxy currently supports the following hashing methods (in alphabetical order, and in PHP pseudocode, using \u003Ccode class=\"badge bg-soft-danger text-danger\">$\u003C\u002Fcode> to denote a variable, \u003Ccode class=\"badge bg-soft-danger text-danger\">.\u003C\u002Fcode> to denote concatenation, and a single quote to encapsulate a string):\u003C\u002Fp>\u003Cdiv class=\"table-responsive w-100\">\u003Ctable class=\"table table-lg table-bordered my-5\">\u003Ctbody>\u003Ctr>\u003Ctd>\u003Cp>Argon2id\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">argon2id\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> It will use the default configuration options when generating the hash\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>BCrypt (with cost)\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">bcrypt\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The cost, default 14\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> \u003Cspan style=\"color: inherit\">This is the recommended hashing method.\u003C\u002Fspan> It will generate the standard \u003Ccode class=\"badge bg-soft-danger text-danger\">$2y$\u003C\u002Fcode> crypt format, which is always 60 characters wide.\u003C\u002Fp>\u003Cp>\u003Cstrong>Supported Systems:\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ca href=\"https:\u002F\u002Fdrupal.org\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Drupal\u003C\u002Fa> 10.1.0+ (use a cost of 10)\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>BCrypt (for WordPress 6.8+)\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">bcrypt_wp\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The cost, default 10\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> It will generate the Wordpress specific \u003Ccode class=\"badge bg-soft-danger text-danger\">$wp$2y$\u003C\u002Fcode> crypt format, which is always 63 characters wide.\u003C\u002Fp>\u003Cp>\u003Cstrong>Supported Systems:\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ca href=\"http:\u002F\u002Fwordpress.org\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Wordpress\u003C\u002Fa> 6.8+\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>concrete5\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">md5($password.&#039;:&#039;.$salt)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The configuration value is the one single salt used for all customer records, since Concrete5 uses a single site-wide salt.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>Craft CMS\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> Specific to Craft.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>ExpressionEngine\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> Specific to ExpressionEngine.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>joomla\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">md5($password.$salt).&#039;:&#039;.$salt\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The length of the randomly generated salt.\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> This is the method used as of Joomla 1.0.13.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>kohana3\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> The hashing methods in the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fkohana\u002Fauth\u002Fblob\u002F3.0\u002Fmaster\u002Fclasses\u002Fkohana\u002Fauth.php\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Kohana3 Auth module\u003C\u002Fa>.\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The Auth module&#039;s \u003Ccode class=\"badge bg-soft-danger text-danger\">$config[&#039;salt_pattern&#039;]\u003C\u002Fcode> value. FoxyCart defaults to the default value in the Auth module.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>Magento MD5\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> For older Magento installations.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>md5\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">md5($password)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> n\u002Fa\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> This is provided for legacy purposes, as many older systems may use unsalted MD5 hashes. It is not recommended unless you need to sync with a system that requires it.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>md5_salted_suffix\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">md5($password.$salt)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The length of the randomly generated salt.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>md5_salted_suffix_2char\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">md5($password.$salt)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> n\u002Fa\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> This really should only be used for synching to osCommerce prior to v2.3.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>pbkdf2\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> Microsoft Identity v2 PBKDF2 implementation\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> Comma separated values for \u003Ccode class=\"badge bg-soft-danger text-danger\">iterations\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">key length\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">algorithm\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">salt size\u003C\u002Fcode>. Defaults to \u003Ccode class=\"badge bg-soft-danger text-danger\">1000, 32, sha1, 16\u003C\u002Fcode>.\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> Returns a base64 encoded string, made up of a concatenated string using \u003Ccode class=\"badge bg-soft-danger text-danger\">“\\0” . $salt . $hash\u003C\u002Fcode>. No separate salt is returned, and the hash should be base64 decoded before encoding the concatenated string.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>pbkdf2\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> From \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmodxcms\u002Frevolution\u002Fblob\u002Fdevelop\u002Fcore\u002Fmodel\u002Fmodx\u002Fhashing\u002Fmodpbkdf2.class.php\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">MODX Revolution&#039;s code\u003C\u002Fa>. Note that MODX no longer uses this method.\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> Comma separated values for \u003Ccode class=\"badge bg-soft-danger text-danger\">iterations\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">key length\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">algorithm\u003C\u002Fcode>. Defaults to \u003Ccode class=\"badge bg-soft-danger text-danger\">1000, 32, sha256\u003C\u002Fcode>.\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> Returns a base64 encoded hash, and uses a 32 character long salt\u003C\u002Fp>\u003Cp>\u003Cstrong>Supported Systems:\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ca href=\"http:\u002F\u002Fmodx.com\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">MODX Revolution 2.x\u003C\u002Fa> (old default configuration; no longer default)\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>phpass\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> Uses the \u003Ca href=\"http:\u002F\u002Fwww.openwall.com\u002Fphpass\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">phpass library\u003C\u002Fa> in “portable” mode. (Portable mode is what most systems that use phpass default to.)\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The configuration value sets the iterations used to instantiate the \u003Ccode class=\"badge bg-soft-danger text-danger\">PasswordHash\u003C\u002Fcode> class. Defaults to 8, which is what Wordpress and most other systems default to.\u003C\u002Fp>\u003Cp>\u003Cstrong>Supported Systems:\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ca href=\"http:\u002F\u002Fwordpress.org\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Wordpress\u003C\u002Fa> 6.7 and older\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>osCommerce 2.3+\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>sha1\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">sha1($password)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> n\u002Fa\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> This is provided for legacy purposes, as many older systems may use unsalted MD5 hashes. It is not recommended unless you need to sync with a system that requires it.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>sha1_salted_suffix\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">sha1($password.$salt)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The length of the randomly generated salt.\u003C\u002Fp>\u003Cp>\u003Cstrong>Supported Systems:\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ca href=\"http:\u002F\u002Fsilverstripe.org\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Silverstripe\u003C\u002Fa> (default configuration)\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>sha256_salted_suffix\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">sha256($password.$salt)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The length of the randomly generated salt.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>sha256_salted_prefix\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">sha256($salt.$password)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The length of the randomly generated salt.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>drupal sha512\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">sha512($salt.$password)^$iterations\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The iterations the password is stretched by.\u003C\u002Fp>\u003Cp>\u003Cstrong>Supported Systems:\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ca href=\"https:\u002F\u002Fdrupal.org\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Drupal\u003C\u002Fa> 7+\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> Beginning in v10.1.0, Drupal uses PHP&#039;s standard \u003Ccode class=\"badge bg-soft-danger text-danger\">password_hash()\u003C\u002Fcode> function, which uses bcrypt, which we support and is detailed below.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>Webvanta SHA1\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> Specific to Webvanta.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\u003Cp>If you need alternate hashing methods, please \u003Ca href=\"http:\u002F\u002Ffoxy.io\u002Fcontact\" target=\"_blank\" class=\"\">let us know\u003C\u002Fa>.\u003C\u002Fp>\u003Chr>\u003Cp>Once the user creation and synchronization functionality is handled, \u003Ca href=\"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fsso\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Single Sign-On (SSO)\u003C\u002Fa> allows a customer who&#039;s already logged into the merchant&#039;s site to continue through to checkout with their user already loaded. This prevents users from needing to log in once to a site, then again on checkout. (SSO checkouts require the \u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCard_Security_Code\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">CSC\u003C\u002Fa> to be entered, in order to minimize the risk of a malicious user stealing a cookie and processing an order using saved payment information.)\u003C\u002Fp>\u003C\u002Fsection>\u003Csection id=\"changing-hashing-methods\" data-title=\"Changing Hashing Methods\" data-title-node=\"H3\">\u003Ch3 data-anchor-id=\"changing-hashing-methods\">\u003Cstrong>Changing Hashing Methods\u003C\u002Fstrong>\u003C\u002Fh3>\u003Cp>The customers hashing method is stored against their user record (which you can in turn access via the \u003Ca href=\"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fwebhooks#json_webhook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">JSON webhook\u003C\u002Fa> and the \u003Ca href=\"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fapi\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">API\u003C\u002Fa> as well), and that is the hashing method used to validate their password when they login. If you&#039;ve changed the hashing method from one to another, any existing customers will be validated against their old hashing method on login, and then once they complete a checkout for your store their password will be rehashed with the new hashing method selected in your stores settings.\u003C\u002Fp>\u003C\u002Fsection>",[1425,1428,1431],{"id":1426,"title":365,"level":1427},"customer-passwords","H2",{"id":1429,"title":402,"level":1430},"hashing-methods","H3",{"id":1432,"title":1389,"level":1430},"changing-hashing-methods",[1434],{"type":1435,"content":1436},"html","\u003Cp>Because Foxy was built from the ground up to augment and not replace external systems, it is a common occurrence that Foxy customer records will need to be created or updated from an external system, or that Foxy customers will need to automatically create users in external systems (like a CMS or CRM). Typically an integration like this will primarily use the \u003Ca href=\"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fwebhooks#json_webhook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">JSON webhook\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fapi.foxycart.com\u002Fdocs\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">the API\u003C\u002Fa> to create and sync users, and \u003Ca href=\"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fsso\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Single Sign-On (SSO)\u003C\u002Fa> to make the customer checkout experience seamless.\u003C\u002Fp>\u003Ch2>Customer Passwords\u003C\u002Fh2>\u003Cp>While the possibilities for this type of synchronization are near limitless, the single most important thing is usually the customer&#039;s password. Foxy customer passwords are returned by the JSON webhook and the API as \u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHash_function\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">hashes\u003C\u002Fa>, and not the actual cleartext password. While the initial user creation is generally straightforward it can get tricky to maintain sync when passwords are reset, so if you tackle an advanced integration you must ensure that any and all password resetting functionality on your systems simultaneously updates the Foxy customer record through \u003Ca href=\"https:\u002F\u002Fapi.foxycart.com\u002Fdocs\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">the API\u003C\u002Fa>.\u003C\u002Fp>\u003Cp>Password hashes are represented in the API and JSON webhook as hexadecimal strings, for example “\u003Ccode class=\"badge bg-soft-danger text-danger\">2e29f4fa2efb67dc28860abf\u003C\u002Fcode>”. Depending on your library&#039;s hash functions, you may need to convert the output of the hash function to a hexadecimal string in order to compare passwords. Any “salt” value generated by Foxy is a random string of letters and numbers.\u003C\u002Fp>\u003Ch3>Hashing Methods\u003C\u002Fh3>\u003Cp>Foxy currently supports the following hashing methods (in alphabetical order, and in PHP pseudocode, using \u003Ccode class=\"badge bg-soft-danger text-danger\">$\u003C\u002Fcode> to denote a variable, \u003Ccode class=\"badge bg-soft-danger text-danger\">.\u003C\u002Fcode> to denote concatenation, and a single quote to encapsulate a string):\u003C\u002Fp>\u003Cdiv class=\"table-responsive w-100\">\u003Ctable class=\"table table-lg table-bordered my-5\">\u003Ctbody>\u003Ctr>\u003Ctd>\u003Cp>Argon2id\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">argon2id\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> It will use the default configuration options when generating the hash\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>BCrypt (with cost)\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">bcrypt\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The cost, default 14\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> \u003Cspan style=\"color: inherit\">This is the recommended hashing method.\u003C\u002Fspan> It will generate the standard \u003Ccode class=\"badge bg-soft-danger text-danger\">$2y$\u003C\u002Fcode> crypt format, which is always 60 characters wide.\u003C\u002Fp>\u003Cp>\u003Cstrong>Supported Systems:\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ca href=\"https:\u002F\u002Fdrupal.org\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Drupal\u003C\u002Fa> 10.1.0+ (use a cost of 10)\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>BCrypt (for WordPress 6.8+)\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">bcrypt_wp\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The cost, default 10\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> It will generate the Wordpress specific \u003Ccode class=\"badge bg-soft-danger text-danger\">$wp$2y$\u003C\u002Fcode> crypt format, which is always 63 characters wide.\u003C\u002Fp>\u003Cp>\u003Cstrong>Supported Systems:\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ca href=\"http:\u002F\u002Fwordpress.org\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Wordpress\u003C\u002Fa> 6.8+\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>concrete5\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">md5($password.&#039;:&#039;.$salt)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The configuration value is the one single salt used for all customer records, since Concrete5 uses a single site-wide salt.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>Craft CMS\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> Specific to Craft.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>ExpressionEngine\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> Specific to ExpressionEngine.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>joomla\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">md5($password.$salt).&#039;:&#039;.$salt\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The length of the randomly generated salt.\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> This is the method used as of Joomla 1.0.13.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>kohana3\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> The hashing methods in the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fkohana\u002Fauth\u002Fblob\u002F3.0\u002Fmaster\u002Fclasses\u002Fkohana\u002Fauth.php\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Kohana3 Auth module\u003C\u002Fa>.\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The Auth module&#039;s \u003Ccode class=\"badge bg-soft-danger text-danger\">$config[&#039;salt_pattern&#039;]\u003C\u002Fcode> value. FoxyCart defaults to the default value in the Auth module.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>Magento MD5\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> For older Magento installations.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>md5\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">md5($password)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> n\u002Fa\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> This is provided for legacy purposes, as many older systems may use unsalted MD5 hashes. It is not recommended unless you need to sync with a system that requires it.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>md5_salted_suffix\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">md5($password.$salt)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The length of the randomly generated salt.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>md5_salted_suffix_2char\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">md5($password.$salt)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> n\u002Fa\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> This really should only be used for synching to osCommerce prior to v2.3.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>pbkdf2\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> Microsoft Identity v2 PBKDF2 implementation\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> Comma separated values for \u003Ccode class=\"badge bg-soft-danger text-danger\">iterations\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">key length\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">algorithm\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">salt size\u003C\u002Fcode>. Defaults to \u003Ccode class=\"badge bg-soft-danger text-danger\">1000, 32, sha1, 16\u003C\u002Fcode>.\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> Returns a base64 encoded string, made up of a concatenated string using \u003Ccode class=\"badge bg-soft-danger text-danger\">“\\0” . $salt . $hash\u003C\u002Fcode>. No separate salt is returned, and the hash should be base64 decoded before encoding the concatenated string.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>pbkdf2\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> From \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmodxcms\u002Frevolution\u002Fblob\u002Fdevelop\u002Fcore\u002Fmodel\u002Fmodx\u002Fhashing\u002Fmodpbkdf2.class.php\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">MODX Revolution&#039;s code\u003C\u002Fa>. Note that MODX no longer uses this method.\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> Comma separated values for \u003Ccode class=\"badge bg-soft-danger text-danger\">iterations\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">key length\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">algorithm\u003C\u002Fcode>. Defaults to \u003Ccode class=\"badge bg-soft-danger text-danger\">1000, 32, sha256\u003C\u002Fcode>.\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> Returns a base64 encoded hash, and uses a 32 character long salt\u003C\u002Fp>\u003Cp>\u003Cstrong>Supported Systems:\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ca href=\"http:\u002F\u002Fmodx.com\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">MODX Revolution 2.x\u003C\u002Fa> (old default configuration; no longer default)\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>phpass\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> Uses the \u003Ca href=\"http:\u002F\u002Fwww.openwall.com\u002Fphpass\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">phpass library\u003C\u002Fa> in “portable” mode. (Portable mode is what most systems that use phpass default to.)\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The configuration value sets the iterations used to instantiate the \u003Ccode class=\"badge bg-soft-danger text-danger\">PasswordHash\u003C\u002Fcode> class. Defaults to 8, which is what Wordpress and most other systems default to.\u003C\u002Fp>\u003Cp>\u003Cstrong>Supported Systems:\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ca href=\"http:\u002F\u002Fwordpress.org\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Wordpress\u003C\u002Fa> 6.7 and older\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>osCommerce 2.3+\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>sha1\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">sha1($password)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> n\u002Fa\u003C\u002Fp>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> This is provided for legacy purposes, as many older systems may use unsalted MD5 hashes. It is not recommended unless you need to sync with a system that requires it.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>sha1_salted_suffix\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">sha1($password.$salt)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The length of the randomly generated salt.\u003C\u002Fp>\u003Cp>\u003Cstrong>Supported Systems:\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ca href=\"http:\u002F\u002Fsilverstripe.org\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Silverstripe\u003C\u002Fa> (default configuration)\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>sha256_salted_suffix\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">sha256($password.$salt)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The length of the randomly generated salt.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>sha256_salted_prefix\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">sha256($salt.$password)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The length of the randomly generated salt.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>drupal sha512\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> \u003Ccode class=\"badge bg-soft-danger text-danger\">sha512($salt.$password)^$iterations\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Cstrong>Configuration:\u003C\u002Fstrong> The iterations the password is stretched by.\u003C\u002Fp>\u003Cp>\u003Cstrong>Supported Systems:\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ca href=\"https:\u002F\u002Fdrupal.org\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Drupal\u003C\u002Fa> 7+\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> Beginning in v10.1.0, Drupal uses PHP&#039;s standard \u003Ccode class=\"badge bg-soft-danger text-danger\">password_hash()\u003C\u002Fcode> function, which uses bcrypt, which we support and is detailed below.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Cp>Webvanta SHA1\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd>\u003Cp>\u003Cstrong>Method:\u003C\u002Fstrong> Specific to Webvanta.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\u003Cp>If you need alternate hashing methods, please \u003Ca href=\"http:\u002F\u002Ffoxy.io\u002Fcontact\" target=\"_blank\" class=\"\">let us know\u003C\u002Fa>.\u003C\u002Fp>\u003Chr>\u003Cp>Once the user creation and synchronization functionality is handled, \u003Ca href=\"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fsso\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Single Sign-On (SSO)\u003C\u002Fa> allows a customer who&#039;s already logged into the merchant&#039;s site to continue through to checkout with their user already loaded. This prevents users from needing to log in once to a site, then again on checkout. (SSO checkouts require the \u003Ca href=\"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCard_Security_Code\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">CSC\u003C\u002Fa> to be entered, in order to minimize the risk of a malicious user stealing a cookie and processing an order using saved payment information.)\u003C\u002Fp>\u003Ch3>\u003Cstrong>Changing Hashing Methods\u003C\u002Fstrong>\u003C\u002Fh3>\u003Cp>The customers hashing method is stored against their user record (which you can in turn access via the \u003Ca href=\"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fwebhooks#json_webhook\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">JSON webhook\u003C\u002Fa> and the \u003Ca href=\"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fapi\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">API\u003C\u002Fa> as well), and that is the hashing method used to validate their password when they login. If you&#039;ve changed the hashing method from one to another, any existing customers will be validated against their old hashing method on login, and then once they complete a checkout for your store their password will be rehashed with the new hashing method selected in your stores settings.\u003C\u002Fp>",{"name":1438,"created_at":1439,"published_at":1440,"updated_at":1441,"id":1442,"uuid":47,"content":1443,"slug":48,"full_slug":48,"sort_by_date":59,"position":1621,"tag_list":1622,"is_startpage":24,"parent_id":59,"meta_data":59,"group_id":1623,"first_published_at":1624,"release_id":59,"lang":65,"path":59,"alternates":1625,"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":1444,"_uid":1447,"title":1448,"action":1449,"fields":1450,"method":1597,"columns":1598,"subtitle":1612,"component":48,"button_text":1618,"submit_title":1619,"submit_subtitle":1620},{"_uid":1445,"title":1438,"plugin":1446,"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",[1451,1456,1460,1568,1571,1576,1591],{"_uid":1452,"name":1453,"type":332,"label":1454,"options":13,"required":33,"component":1455,"placeholder":13},"9a70b226-2036-4f90-a052-b3efa61c5896","name","Name","form___field",{"_uid":1457,"name":1458,"type":1458,"label":1459,"options":13,"required":33,"component":1455,"placeholder":13},"86ba35be-ff43-4a28-8633-14052a8f6622","email","Email Address",{"_uid":1461,"name":1462,"type":1463,"label":1464,"options":1465,"required":33,"component":1455,"conditions":1466,"placeholder":13},"3f827475-492c-4f97-aa1e-2386ac263b6c","topic","select","Topic","Presales, Support, Billing, Partnerships, Order Enquiry, Other",[1467,1522,1532,1539,1547,1555,1561],{"_uid":1468,"equals":1469,"fields":1470,"component":1521},"e21d97dd-e68e-4fa6-ba97-bc40f3041dde","Order Enquiry",[1471],{"_uid":1472,"body":1473,"type":1519,"title":13,"component":1520},"b64992bc-6d53-48b8-b7a0-d81e5a062e50",{"type":324,"content":1474},[1475],{"type":327,"content":1476},[1477,1479,1486,1488,1490,1491,1495,1497,1502,1510,1512,1517],{"text":1478,"type":332},"We are ",{"text":1480,"type":332,"marks":1481},"Foxy.io",[1482],{"type":337,"attrs":1483},{"href":1484,"uuid":59,"anchor":59,"custom":1485,"target":59,"linktype":31},"http:\u002F\u002FFoxy.io",{},{"text":1487,"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":1489},"hard_break",{"type":1489},{"text":1492,"type":332,"marks":1493},"NOTE:",[1494],{"type":445},{"text":1496,"type":332}," We are ",{"text":1498,"type":332,"marks":1499},"not ",[1500],{"type":1501},"italic",{"text":1503,"type":332,"marks":1504},"Foxy.in",[1505,1509],{"type":337,"attrs":1506},{"href":1507,"uuid":59,"anchor":59,"custom":1508,"target":59,"linktype":31},"http:\u002F\u002FFoxy.in",{},{"type":1501},{"text":1511,"type":332},". We are not in any way affiliated with ",{"text":1503,"type":332,"marks":1513},[1514],{"type":337,"attrs":1515},{"href":1507,"uuid":59,"anchor":59,"custom":1516,"target":59,"linktype":31},{},{"text":1518,"type":332},", and cannot help in any way with your order from that website.","danger","global___alert","form___condition",{"_uid":1523,"equals":1524,"fields":1525,"component":1521},"8765c3e1-25cf-44aa-b8ea-fc6094acf9c3","Presales",[1526],{"_uid":1527,"name":1528,"type":1529,"label":13,"options":13,"required":24,"component":1455,"conditions":1530,"placeholder":13,"default_value":1531},"cf464f8e-d643-4f6e-af29-d3abffaf7380","department_email_address","hidden",[],"hello@foxy.io",{"_uid":1533,"equals":208,"fields":1534,"component":1521},"4007b6d8-77e5-421d-bd1e-6f336dd853fb",[1535],{"_uid":1536,"name":1528,"type":1529,"label":13,"options":13,"required":24,"component":1455,"conditions":1537,"placeholder":13,"default_value":1538},"7b4c6aa5-a68c-45e0-9ce1-0a36af10c0c2",[],"help@foxy.io",{"_uid":1540,"equals":1541,"fields":1542,"component":1521},"1dbb8f11-613d-43cd-9e09-1b94f6e19219","Billing",[1543],{"_uid":1544,"name":1528,"type":1529,"label":13,"options":13,"required":24,"component":1455,"conditions":1545,"placeholder":13,"default_value":1546},"a0ac0d1b-bc4f-4a6c-a682-581d450b0b73",[],"help+billing@foxy.io",{"_uid":1548,"equals":1549,"fields":1550,"component":1521},"a0a53a50-7172-4a29-ba58-181e38874e12","Partnerships",[1551],{"_uid":1552,"name":1528,"type":1529,"label":13,"options":13,"required":24,"component":1455,"conditions":1553,"placeholder":13,"default_value":1554},"7aa011d9-f374-4aed-b5a5-929b54aaf152",[],"partners@foxy.io",{"_uid":1556,"equals":1469,"fields":1557,"component":1521},"a4cd431f-25d5-41c7-bfdc-02c908c8fb47",[1558],{"_uid":1559,"name":1528,"type":1529,"label":13,"options":13,"required":24,"component":1455,"conditions":1560,"placeholder":13,"default_value":1531},"f5d52168-d6ae-451b-94ee-2ced1cbd28ad",[],{"_uid":1562,"equals":1563,"fields":1564,"component":1521},"25aba1ed-eb41-4bbc-aa89-f7a7167ea86e","Other",[1565],{"_uid":1566,"name":1528,"type":1529,"label":13,"options":13,"required":24,"component":1455,"conditions":1567,"placeholder":13,"default_value":1531},"f40dfaef-c203-4b71-bf4e-e1b43cef192b",[],{"_uid":1569,"component":1570},"e9c53a05-f40a-4510-aaf8-bc072a235a0c","form___subject",{"_uid":1572,"name":1573,"type":1574,"label":1575,"options":13,"required":33,"component":1455,"placeholder":13},"a4c4d385-fff4-4978-99fb-b68cfea623d6","message","textarea","Message",{"_uid":1577,"name":1578,"type":1463,"label":1579,"options":1580,"required":33,"component":1455,"conditions":1581,"placeholder":13},"8a3c9f85-f438-427d-9c7a-d7b295a14b5b","existing_user","Are you an existing user?","No, Yes",[1582],{"_uid":1583,"equals":1584,"fields":1585,"component":1521},"115933d6-262a-4b59-8fa8-579c5ad73de1","Yes",[1586],{"_uid":1587,"name":1588,"type":332,"label":1589,"options":13,"required":33,"component":1455,"conditions":1590,"placeholder":13},"44b6ff23-98f0-4e95-b7f5-c23e06415c2d","subdomain","Store Subdomain",[],{"_uid":1592,"name":1593,"type":1463,"label":1594,"options":1595,"required":33,"component":1455,"conditions":1596,"placeholder":13},"922a5cef-3af2-4113-8855-36c7910e3ee3","user_type","What type of user are you?","Developer, Designer, Merchant",[],"POST",[1599],{"_uid":1600,"text":1601,"title":1610,"component":1611},"7323b90d-a93a-4bf1-baa9-20d0b7ead61b",{"type":324,"content":1602},[1603],{"type":327,"content":1604},[1605,1607,1608],{"text":1606,"type":332},"855.369.9227",{"type":1489},{"text":1609,"type":332},"9:30am-6pm Central M-F","Pre-sales, Sales, & Partnerships","contact___footer_column",{"type":324,"content":1613},[1614],{"type":327,"content":1615},[1616],{"text":1617,"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,1627],{"name":1628,"created_at":1629,"published_at":1630,"updated_at":1631,"id":1632,"uuid":1413,"content":1633,"slug":1647,"full_slug":1648,"sort_by_date":59,"position":1649,"tag_list":1650,"is_startpage":24,"parent_id":310,"meta_data":59,"group_id":1651,"first_published_at":1630,"release_id":59,"lang":65,"path":59,"alternates":1652,"default_full_slug":59,"translated_slugs":59},"Customers","2023-01-19T16:16:54.964Z","2023-01-19T17:25:31.890Z","2023-01-19T17:25:31.909Z",28232,{"_uid":1634,"icon":1635,"name":1628,"guides":1636,"summary":1637,"category":13,"component":297,"blog_posts":1638,"content_hub":24,"icon_custom":1639,"case_studies":1640,"faq_sections":1641,"help_articles":1642,"featured_guides":1643,"mailbox_category":13,"featured_articles":1644,"featured_blog_posts":1645,"featured_case_studies":1646},"d2a7083c-603b-4b42-a6ee-86403e480bba","fa-user-tag",[],"Customer management, account creation, customer portal, and more.",[],{"id":59,"alt":59,"name":13,"focus":59,"title":59,"filename":13,"copyright":59,"fieldtype":81},[],[],[],[],[],[],[],"customers","help\u002Fcategories\u002Fcustomers",180,[],"ee2cb21b-988c-4477-adec-89f4bd9fa030",[],{},1784562227375]