[{"data":1,"prerenderedAt":830},["ShallowReactive",2],{"header:help":3,"footer:default":67,"story:navigation\u002Fsearch:help":250,"story:help\u002Fcategories":288,"story:help\u002Farticles\u002Fsign-open-user-editable-fields-with-hmac":314,"no-guide:sign-open-user-editable-fields-with-hmac":59,"article:\u002Fhelp\u002Farticles\u002Fsign-open-user-editable-fields-with-hmac":569,"story:contact":585,"help:tree:d45142c0-4880-45a0-be87-65d816a29c83":775,"_apollo:default":829},{"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":562,"full_slug":563,"sort_by_date":59,"position":564,"tag_list":565,"is_startpage":24,"parent_id":566,"meta_data":59,"group_id":567,"first_published_at":317,"release_id":59,"lang":65,"path":59,"alternates":568,"default_full_slug":59,"translated_slugs":59},"Sign open (user-editable) fields with HMAC","2026-06-29T20:22:07.271Z","2026-06-29T20:50:23.922Z","2026-06-29T20:50:23.937Z",192818902151013,"d45142c0-4880-45a0-be87-65d816a29c83",{"_uid":322,"body":323,"name":315,"image":557,"pinned":24,"summary":559,"category":560,"component":266,"related_articles":561},"a8a2d385-8256-44f1-81f6-4bdab7233ca9",{"type":324,"content":325},"doc",[326,346,353,375,396,402,407,412,417,470,475,485,490,505,510],{"type":327,"attrs":328,"content":329},"paragraph",{"textAlign":59},[330,333,338,340,344],{"text":331,"type":332},"By default, HMAC signing requires a known value at the time of signing. For fields where the value is entered by the customer — such as ","text",{"text":334,"type":332,"marks":335},"quantity",[336],{"type":337},"code",{"text":339,"type":332}," or a custom message field — you use the ",{"text":341,"type":332,"marks":342},"--OPEN--",[343],{"type":337},{"text":345,"type":332}," keyword instead of a real value, which tells Foxy to accept whatever the customer enters.",{"type":347,"attrs":348,"content":350},"heading",{"level":349,"textAlign":59},2,[351],{"text":352,"type":332},"How it works",{"type":327,"attrs":354,"content":355},{"textAlign":59},[356,358,361,363,367,369,373],{"text":357,"type":332},"Instead of concatenating the actual value, use the string ",{"text":341,"type":332,"marks":359},[360],{"type":337},{"text":362,"type":332}," as the value when generating the hash. Append ",{"text":364,"type":332,"marks":365},"||open",[366],{"type":337},{"text":368,"type":332}," after the hash in the ",{"text":370,"type":332,"marks":371},"name",[372],{"type":337},{"text":374,"type":332}," attribute to tell Foxy the field accepts user-generated values.",{"type":327,"attrs":376,"content":377},{"textAlign":59},[378,380,383,385,388,390,394],{"text":379,"type":332},"For example, for a ",{"text":334,"type":332,"marks":381},[382],{"type":337},{"text":384,"type":332}," field on a product with ",{"text":337,"type":332,"marks":386},[387],{"type":337},{"text":389,"type":332}," of ",{"text":391,"type":332,"marks":392},"abc123",[393],{"type":337},{"text":395,"type":332},":",{"type":397,"attrs":398,"content":399},"code_block",{"class":59},[400],{"text":401,"type":332},"hash_hmac('sha256', 'abc123quantity--OPEN--', $api_key);\n",{"type":327,"attrs":403,"content":404},{"textAlign":59},[405],{"text":406,"type":332},"The signed input looks like this:",{"type":397,"attrs":408,"content":409},{"class":59},[410],{"text":411,"type":332},"\u003Cinput type=\"text\" name=\"quantity||753d51d4675bfb6f0aec5e6fbfd8a2e32cbea620c15a181567b052d350469c50||open\" value=\"\" \u002F>\n",{"type":347,"attrs":413,"content":414},{"level":349,"textAlign":59},[415],{"text":416,"type":332},"Steps",{"type":418,"attrs":419,"content":421},"ordered_list",{"order":420},1,[422,440,447],{"type":423,"content":424},"list_item",[425],{"type":327,"attrs":426,"content":427},{"textAlign":59},[428,430,433,435,438],{"text":429,"type":332},"For each user-editable field, concatenate the product ",{"text":337,"type":332,"marks":431},[432],{"type":337},{"text":434,"type":332},", field name, and the string ",{"text":341,"type":332,"marks":436},[437],{"type":337},{"text":439,"type":332},".",{"type":423,"content":441},[442],{"type":327,"attrs":443,"content":444},{"textAlign":59},[445],{"text":446,"type":332},"Generate an HMAC SHA-256 hash of that string using your store’s API key.",{"type":423,"content":448},[449],{"type":327,"attrs":450,"content":451},{"textAlign":59},[452,454,458,460,463,465,468],{"text":453,"type":332},"Append ",{"text":455,"type":332,"marks":456},"||",[457],{"type":337},{"text":459,"type":332},", the hash, and ",{"text":364,"type":332,"marks":461},[462],{"type":337},{"text":464,"type":332}," to the field’s ",{"text":370,"type":332,"marks":466},[467],{"type":337},{"text":469,"type":332}," attribute.",{"type":347,"attrs":471,"content":472},{"level":349,"textAlign":59},[473],{"text":474,"type":332},"PHP helper function",{"type":327,"attrs":476,"content":477},{"textAlign":59},[478,480,483],{"text":479,"type":332},"The PHP helper function handles open fields automatically. Pass ",{"text":341,"type":332,"marks":481},[482],{"type":337},{"text":484,"type":332}," as the value:",{"type":397,"attrs":486,"content":487},{"class":59},[488],{"text":489,"type":332},"get_verification('quantity', '--OPEN--', 'abc123');\n",{"type":327,"attrs":491,"content":492},{"textAlign":59},[493,495,498,500,503],{"text":494,"type":332},"The function detects ",{"text":341,"type":332,"marks":496},[497],{"type":337},{"text":499,"type":332}," and appends ",{"text":364,"type":332,"marks":501},[502],{"type":337},{"text":504,"type":332}," to the output automatically.",{"type":347,"attrs":506,"content":507},{"level":349,"textAlign":59},[508],{"text":509,"type":332},"Notes",{"type":511,"content":512},"bullet_list",[513,525,537,550],{"type":423,"content":514},[515],{"type":327,"attrs":516,"content":517},{"textAlign":59},[518,520,523],{"text":519,"type":332},"The ",{"text":364,"type":332,"marks":521},[522],{"type":337},{"text":524,"type":332}," suffix is required. Without it, Foxy will not accept user-generated values in that field.",{"type":423,"content":526},[527],{"type":327,"attrs":528,"content":529},{"textAlign":59},[530,532,535],{"text":531,"type":332},"Do not use ",{"text":341,"type":332,"marks":533},[534],{"type":337},{"text":536,"type":332}," as a real product value — it will allow that field to be freely modified by the customer.",{"type":423,"content":538},[539],{"type":327,"attrs":540,"content":541},{"textAlign":59},[542,544,548],{"text":543,"type":332},"Curly brackets ",{"text":545,"type":332,"marks":546},"{ }",[547],{"type":337},{"text":549,"type":332}," are stripped from any open field value, preventing customers from injecting price, weight, code, or category modifiers.",{"type":423,"content":551},[552],{"type":327,"attrs":553,"content":554},{"textAlign":59},[555],{"text":556,"type":332},"Open fields should still be signed — do not skip them or leave them unsigned.",{"id":59,"alt":59,"name":13,"focus":59,"title":59,"source":59,"filename":13,"copyright":59,"fieldtype":81,"meta_data":558},{},"How to sign form fields that accept user input, such as quantity, using HMAC.","ff9269e2-2402-422e-aa80-19acc150b78a",[],"sign-open-user-editable-fields-with-hmac","help\u002Farticles\u002Fsign-open-user-editable-fields-with-hmac",-2500,[],2659,"a613a33b-ff58-42e2-9258-ee13ff7719f2",[],{"html":570,"sections":571,"segments":581},"\u003Cp>By default, HMAC signing requires a known value at the time of signing. For fields where the value is entered by the customer — such as \u003Ccode class=\"badge bg-soft-danger text-danger\">quantity\u003C\u002Fcode> or a custom message field — you use the \u003Ccode class=\"badge bg-soft-danger text-danger\">--OPEN--\u003C\u002Fcode> keyword instead of a real value, which tells Foxy to accept whatever the customer enters.\u003C\u002Fp>\u003Csection id=\"how-it-works\" data-title=\"How it works\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"how-it-works\">How it works\u003C\u002Fh2>\u003Cp>Instead of concatenating the actual value, use the string \u003Ccode class=\"badge bg-soft-danger text-danger\">--OPEN--\u003C\u002Fcode> as the value when generating the hash. Append \u003Ccode class=\"badge bg-soft-danger text-danger\">||open\u003C\u002Fcode> after the hash in the \u003Ccode class=\"badge bg-soft-danger text-danger\">name\u003C\u002Fcode> attribute to tell Foxy the field accepts user-generated values.\u003C\u002Fp>\u003Cp>For example, for a \u003Ccode class=\"badge bg-soft-danger text-danger\">quantity\u003C\u002Fcode> field on a product with \u003Ccode class=\"badge bg-soft-danger text-danger\">code\u003C\u002Fcode> of \u003Ccode class=\"badge bg-soft-danger text-danger\">abc123\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>hash_hmac(&#x27;sha256&#x27;, &#x27;abc123quantity--OPEN--&#x27;, $api_key);\n\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cp>The signed input looks like this:\u003C\u002Fp>\u003Cdiv class=\"position-relative w-100 overflow-hidden rounded-2\" data-code-block>\u003Cdiv class=\"d-flex justify-content-end border-bottom\" style=\"background:#2b2c3b;\">\u003Cbutton type=\"button\" class=\"btn btn-link btn-sm text-light\" title=\"Copy\" data-code-button>\u003Cspan data-code-default style=\"\">\u003Ci class=\"fal fa-copy me-2\">\u003C\u002Fi> Copy \u003C\u002Fspan>\u003Cspan class=\"text-success\" data-code-success style=\"display:none;\">\u003Ci class=\"fal fa-check ms-2\">\u003C\u002Fi> Copied \u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"small\">\u003Cpre class=\"hljs p-2\" data-code-content>\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">input\u003C\u002Fspan> \u003Cspan class=\"hljs-attr\">type\u003C\u002Fspan>=\u003Cspan class=\"hljs-string\">&quot;text&quot;\u003C\u002Fspan> \u003Cspan class=\"hljs-attr\">name\u003C\u002Fspan>=\u003Cspan class=\"hljs-string\">&quot;quantity||753d51d4675bfb6f0aec5e6fbfd8a2e32cbea620c15a181567b052d350469c50||open&quot;\u003C\u002Fspan> \u003Cspan class=\"hljs-attr\">value\u003C\u002Fspan>=\u003Cspan class=\"hljs-string\">&quot;&quot;\u003C\u002Fspan> \u002F&gt;\u003C\u002Fspan>\n\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>\u003Csection id=\"steps\" data-title=\"Steps\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"steps\">Steps\u003C\u002Fh2>\u003Col class=\"step step-icon-sm step-dashed step-border-last-0 mt-3\">\u003Cli class=\"step-item\">\u003Cdiv class=\"step-content-wrapper\">\u003Cspan class=\"step-icon step-icon-soft-primary\">1\u003C\u002Fspan>\u003Cdiv class=\"w-100 overflow-hidden\">\u003Cdiv class=\"step-content mt-2\">\u003Cp>For each user-editable field, concatenate the product \u003Ccode class=\"badge bg-soft-danger text-danger\">code\u003C\u002Fcode>, field name, and the string \u003Ccode class=\"badge bg-soft-danger text-danger\">--OPEN--\u003C\u002Fcode>.\u003C\u002Fp>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fli>\u003Cli class=\"step-item\">\u003Cdiv class=\"step-content-wrapper\">\u003Cspan class=\"step-icon step-icon-soft-primary\">2\u003C\u002Fspan>\u003Cdiv class=\"w-100 overflow-hidden\">\u003Cdiv class=\"step-content mt-2\">\u003Cp>Generate an HMAC SHA-256 hash of that string using your store’s API key.\u003C\u002Fp>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fli>\u003Cli class=\"step-item\">\u003Cdiv class=\"step-content-wrapper\">\u003Cspan class=\"step-icon step-icon-soft-primary\">3\u003C\u002Fspan>\u003Cdiv class=\"w-100 overflow-hidden\">\u003Cdiv class=\"step-content mt-2\">\u003Cp>Append \u003Ccode class=\"badge bg-soft-danger text-danger\">||\u003C\u002Fcode>, the hash, and \u003Ccode class=\"badge bg-soft-danger text-danger\">||open\u003C\u002Fcode> to the field’s \u003Ccode class=\"badge bg-soft-danger text-danger\">name\u003C\u002Fcode> attribute.\u003C\u002Fp>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fli>\u003C\u002Fol>\u003C\u002Fsection>\u003Csection id=\"php-helper-function\" data-title=\"PHP helper function\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"php-helper-function\">PHP helper function\u003C\u002Fh2>\u003Cp>The PHP helper function handles open fields automatically. Pass \u003Ccode class=\"badge bg-soft-danger text-danger\">--OPEN--\u003C\u002Fcode> as the 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>get_verification(&#x27;quantity&#x27;, &#x27;--OPEN--&#x27;, &#x27;abc123&#x27;);\n\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cp>The function detects \u003Ccode class=\"badge bg-soft-danger text-danger\">--OPEN--\u003C\u002Fcode> and appends \u003Ccode class=\"badge bg-soft-danger text-danger\">||open\u003C\u002Fcode> to the output automatically.\u003C\u002Fp>\u003C\u002Fsection>\u003Csection id=\"notes\" data-title=\"Notes\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"notes\">Notes\u003C\u002Fh2>\u003Cul>\u003Cli>\u003Cp>The \u003Ccode class=\"badge bg-soft-danger text-danger\">||open\u003C\u002Fcode> suffix is required. Without it, Foxy will not accept user-generated values in that field.\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>Do not use \u003Ccode class=\"badge bg-soft-danger text-danger\">--OPEN--\u003C\u002Fcode> as a real product value — it will allow that field to be freely modified by the customer.\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>Curly brackets \u003Ccode class=\"badge bg-soft-danger text-danger\">{ }\u003C\u002Fcode> are stripped from any open field value, preventing customers from injecting price, weight, code, or category modifiers.\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>Open fields should still be signed — do not skip them or leave them unsigned.\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Fsection>",[572,575,577,579],{"id":573,"title":352,"level":574},"how-it-works","H2",{"id":576,"title":416,"level":574},"steps",{"id":578,"title":474,"level":574},"php-helper-function",{"id":580,"title":509,"level":574},"notes",[582],{"type":583,"content":584},"html","\u003Cp>By default, HMAC signing requires a known value at the time of signing. For fields where the value is entered by the customer — such as \u003Ccode class=\"badge bg-soft-danger text-danger\">quantity\u003C\u002Fcode> or a custom message field — you use the \u003Ccode class=\"badge bg-soft-danger text-danger\">--OPEN--\u003C\u002Fcode> keyword instead of a real value, which tells Foxy to accept whatever the customer enters.\u003C\u002Fp>\u003Ch2>How it works\u003C\u002Fh2>\u003Cp>Instead of concatenating the actual value, use the string \u003Ccode class=\"badge bg-soft-danger text-danger\">--OPEN--\u003C\u002Fcode> as the value when generating the hash. Append \u003Ccode class=\"badge bg-soft-danger text-danger\">||open\u003C\u002Fcode> after the hash in the \u003Ccode class=\"badge bg-soft-danger text-danger\">name\u003C\u002Fcode> attribute to tell Foxy the field accepts user-generated values.\u003C\u002Fp>\u003Cp>For example, for a \u003Ccode class=\"badge bg-soft-danger text-danger\">quantity\u003C\u002Fcode> field on a product with \u003Ccode class=\"badge bg-soft-danger text-danger\">code\u003C\u002Fcode> of \u003Ccode class=\"badge bg-soft-danger text-danger\">abc123\u003C\u002Fcode>:\u003C\u002Fp>\u003Cpre>\u003Ccode>hash_hmac(&#039;sha256&#039;, &#039;abc123quantity--OPEN--&#039;, $api_key);\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>The signed input looks like this:\u003C\u002Fp>\u003Cpre>\u003Ccode>&lt;input type=&quot;text&quot; name=&quot;quantity||753d51d4675bfb6f0aec5e6fbfd8a2e32cbea620c15a181567b052d350469c50||open&quot; value=&quot;&quot; \u002F&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2>Steps\u003C\u002Fh2>\u003Col order=\"1\">\u003Cli>\u003Cp>For each user-editable field, concatenate the product \u003Ccode class=\"badge bg-soft-danger text-danger\">code\u003C\u002Fcode>, field name, and the string \u003Ccode class=\"badge bg-soft-danger text-danger\">--OPEN--\u003C\u002Fcode>.\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>Generate an HMAC SHA-256 hash of that string using your store’s API key.\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>Append \u003Ccode class=\"badge bg-soft-danger text-danger\">||\u003C\u002Fcode>, the hash, and \u003Ccode class=\"badge bg-soft-danger text-danger\">||open\u003C\u002Fcode> to the field’s \u003Ccode class=\"badge bg-soft-danger text-danger\">name\u003C\u002Fcode> attribute.\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Fol>\u003Ch2>PHP helper function\u003C\u002Fh2>\u003Cp>The PHP helper function handles open fields automatically. Pass \u003Ccode class=\"badge bg-soft-danger text-danger\">--OPEN--\u003C\u002Fcode> as the value:\u003C\u002Fp>\u003Cpre>\u003Ccode>get_verification(&#039;quantity&#039;, &#039;--OPEN--&#039;, &#039;abc123&#039;);\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>The function detects \u003Ccode class=\"badge bg-soft-danger text-danger\">--OPEN--\u003C\u002Fcode> and appends \u003Ccode class=\"badge bg-soft-danger text-danger\">||open\u003C\u002Fcode> to the output automatically.\u003C\u002Fp>\u003Ch2>Notes\u003C\u002Fh2>\u003Cul>\u003Cli>\u003Cp>The \u003Ccode class=\"badge bg-soft-danger text-danger\">||open\u003C\u002Fcode> suffix is required. Without it, Foxy will not accept user-generated values in that field.\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>Do not use \u003Ccode class=\"badge bg-soft-danger text-danger\">--OPEN--\u003C\u002Fcode> as a real product value — it will allow that field to be freely modified by the customer.\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>Curly brackets \u003Ccode class=\"badge bg-soft-danger text-danger\">{ }\u003C\u002Fcode> are stripped from any open field value, preventing customers from injecting price, weight, code, or category modifiers.\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>Open fields should still be signed — do not skip them or leave them unsigned.\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>",{"name":586,"created_at":587,"published_at":588,"updated_at":589,"id":590,"uuid":47,"content":591,"slug":48,"full_slug":48,"sort_by_date":59,"position":770,"tag_list":771,"is_startpage":24,"parent_id":59,"meta_data":59,"group_id":772,"first_published_at":773,"release_id":59,"lang":65,"path":59,"alternates":774,"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":592,"_uid":595,"title":596,"action":597,"fields":598,"method":746,"columns":747,"subtitle":761,"component":48,"button_text":767,"submit_title":768,"submit_subtitle":769},{"_uid":593,"title":586,"plugin":594,"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",[599,603,607,717,720,725,740],{"_uid":600,"name":370,"type":332,"label":601,"options":13,"required":33,"component":602,"placeholder":13},"9a70b226-2036-4f90-a052-b3efa61c5896","Name","form___field",{"_uid":604,"name":605,"type":605,"label":606,"options":13,"required":33,"component":602,"placeholder":13},"86ba35be-ff43-4a28-8633-14052a8f6622","email","Email Address",{"_uid":608,"name":609,"type":610,"label":611,"options":612,"required":33,"component":602,"conditions":613,"placeholder":13},"3f827475-492c-4f97-aa1e-2386ac263b6c","topic","select","Topic","Presales, Support, Billing, Partnerships, Order Enquiry, Other",[614,671,681,688,696,704,710],{"_uid":615,"equals":616,"fields":617,"component":670},"e21d97dd-e68e-4fa6-ba97-bc40f3041dde","Order Enquiry",[618],{"_uid":619,"body":620,"type":668,"title":13,"component":669},"b64992bc-6d53-48b8-b7a0-d81e5a062e50",{"type":324,"content":621},[622],{"type":327,"content":623},[624,626,634,636,638,639,644,646,651,659,661,666],{"text":625,"type":332},"We are ",{"text":627,"type":332,"marks":628},"Foxy.io",[629],{"type":630,"attrs":631},"link",{"href":632,"uuid":59,"anchor":59,"custom":633,"target":59,"linktype":31},"http:\u002F\u002FFoxy.io",{},{"text":635,"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":637},"hard_break",{"type":637},{"text":640,"type":332,"marks":641},"NOTE:",[642],{"type":643},"bold",{"text":645,"type":332}," We are ",{"text":647,"type":332,"marks":648},"not ",[649],{"type":650},"italic",{"text":652,"type":332,"marks":653},"Foxy.in",[654,658],{"type":630,"attrs":655},{"href":656,"uuid":59,"anchor":59,"custom":657,"target":59,"linktype":31},"http:\u002F\u002FFoxy.in",{},{"type":650},{"text":660,"type":332},". We are not in any way affiliated with ",{"text":652,"type":332,"marks":662},[663],{"type":630,"attrs":664},{"href":656,"uuid":59,"anchor":59,"custom":665,"target":59,"linktype":31},{},{"text":667,"type":332},", and cannot help in any way with your order from that website.","danger","global___alert","form___condition",{"_uid":672,"equals":673,"fields":674,"component":670},"8765c3e1-25cf-44aa-b8ea-fc6094acf9c3","Presales",[675],{"_uid":676,"name":677,"type":678,"label":13,"options":13,"required":24,"component":602,"conditions":679,"placeholder":13,"default_value":680},"cf464f8e-d643-4f6e-af29-d3abffaf7380","department_email_address","hidden",[],"hello@foxy.io",{"_uid":682,"equals":208,"fields":683,"component":670},"4007b6d8-77e5-421d-bd1e-6f336dd853fb",[684],{"_uid":685,"name":677,"type":678,"label":13,"options":13,"required":24,"component":602,"conditions":686,"placeholder":13,"default_value":687},"7b4c6aa5-a68c-45e0-9ce1-0a36af10c0c2",[],"help@foxy.io",{"_uid":689,"equals":690,"fields":691,"component":670},"1dbb8f11-613d-43cd-9e09-1b94f6e19219","Billing",[692],{"_uid":693,"name":677,"type":678,"label":13,"options":13,"required":24,"component":602,"conditions":694,"placeholder":13,"default_value":695},"a0ac0d1b-bc4f-4a6c-a682-581d450b0b73",[],"help+billing@foxy.io",{"_uid":697,"equals":698,"fields":699,"component":670},"a0a53a50-7172-4a29-ba58-181e38874e12","Partnerships",[700],{"_uid":701,"name":677,"type":678,"label":13,"options":13,"required":24,"component":602,"conditions":702,"placeholder":13,"default_value":703},"7aa011d9-f374-4aed-b5a5-929b54aaf152",[],"partners@foxy.io",{"_uid":705,"equals":616,"fields":706,"component":670},"a4cd431f-25d5-41c7-bfdc-02c908c8fb47",[707],{"_uid":708,"name":677,"type":678,"label":13,"options":13,"required":24,"component":602,"conditions":709,"placeholder":13,"default_value":680},"f5d52168-d6ae-451b-94ee-2ced1cbd28ad",[],{"_uid":711,"equals":712,"fields":713,"component":670},"25aba1ed-eb41-4bbc-aa89-f7a7167ea86e","Other",[714],{"_uid":715,"name":677,"type":678,"label":13,"options":13,"required":24,"component":602,"conditions":716,"placeholder":13,"default_value":680},"f40dfaef-c203-4b71-bf4e-e1b43cef192b",[],{"_uid":718,"component":719},"e9c53a05-f40a-4510-aaf8-bc072a235a0c","form___subject",{"_uid":721,"name":722,"type":723,"label":724,"options":13,"required":33,"component":602,"placeholder":13},"a4c4d385-fff4-4978-99fb-b68cfea623d6","message","textarea","Message",{"_uid":726,"name":727,"type":610,"label":728,"options":729,"required":33,"component":602,"conditions":730,"placeholder":13},"8a3c9f85-f438-427d-9c7a-d7b295a14b5b","existing_user","Are you an existing user?","No, Yes",[731],{"_uid":732,"equals":733,"fields":734,"component":670},"115933d6-262a-4b59-8fa8-579c5ad73de1","Yes",[735],{"_uid":736,"name":737,"type":332,"label":738,"options":13,"required":33,"component":602,"conditions":739,"placeholder":13},"44b6ff23-98f0-4e95-b7f5-c23e06415c2d","subdomain","Store Subdomain",[],{"_uid":741,"name":742,"type":610,"label":743,"options":744,"required":33,"component":602,"conditions":745,"placeholder":13},"922a5cef-3af2-4113-8855-36c7910e3ee3","user_type","What type of user are you?","Developer, Designer, Merchant",[],"POST",[748],{"_uid":749,"text":750,"title":759,"component":760},"7323b90d-a93a-4bf1-baa9-20d0b7ead61b",{"type":324,"content":751},[752],{"type":327,"content":753},[754,756,757],{"text":755,"type":332},"855.369.9227",{"type":637},{"text":758,"type":332},"9:30am-6pm Central M-F","Pre-sales, Sales, & Partnerships","contact___footer_column",{"type":324,"content":762},[763],{"type":327,"content":764},[765],{"text":766,"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,776,804],{"name":777,"created_at":778,"published_at":779,"updated_at":780,"id":781,"uuid":782,"content":783,"slug":797,"full_slug":798,"sort_by_date":59,"position":799,"tag_list":800,"is_startpage":24,"parent_id":310,"meta_data":59,"group_id":801,"first_published_at":802,"release_id":59,"lang":65,"path":59,"alternates":803,"default_full_slug":59,"translated_slugs":59},"Products","2023-01-19T16:20:53.075Z","2024-06-05T04:29:14.851Z","2024-06-05T04:29:14.872Z",28236,"389d5512-29ba-4a93-9cfa-9491d1618f73",{"_uid":784,"icon":785,"name":777,"guides":786,"pinned":24,"summary":787,"category":13,"component":297,"blog_posts":788,"content_hub":24,"icon_custom":789,"case_studies":790,"faq_sections":791,"help_articles":792,"featured_guides":793,"mailbox_category":13,"featured_articles":794,"featured_blog_posts":795,"featured_case_studies":796},"3551f6e8-765a-4b8d-8587-2e2eda4d2b23","fa-tags",[],"How products work, supported product types, inventory management, and more.",[],{"id":59,"alt":59,"name":13,"focus":59,"title":59,"filename":13,"copyright":59,"fieldtype":81},[],[],[],[],[],[],[],"products","help\u002Fcategories\u002Fproducts",150,[],"c025c7a7-0d20-4244-938a-c8d6588e1269","2023-01-19T17:25:32.570Z",[],{"name":805,"created_at":806,"published_at":807,"updated_at":808,"id":809,"uuid":560,"content":810,"slug":823,"full_slug":824,"sort_by_date":59,"position":825,"tag_list":826,"is_startpage":24,"parent_id":310,"meta_data":59,"group_id":827,"first_published_at":807,"release_id":59,"lang":65,"path":59,"alternates":828,"default_full_slug":59,"translated_slugs":59},"Product Security","2026-06-29T20:00:54.676Z","2026-06-29T20:37:32.009Z","2026-06-29T20:37:32.025Z",192813689601883,{"_uid":811,"icon":13,"name":805,"type":812,"pinned":24,"summary":813,"category":782,"component":297,"blog_posts":814,"icon_custom":815,"case_studies":817,"faq_sections":818,"featured_guides":819,"mailbox_category":13,"featured_articles":820,"featured_blog_posts":821,"featured_case_studies":822},"bd9968b0-6d3b-4a2b-a7bc-79263044b475","simple","How to enable and implement HMAC product validation, including signing product links, forms, and bundled products.",[],{"id":59,"alt":59,"name":13,"focus":59,"title":59,"source":59,"filename":13,"copyright":59,"fieldtype":81,"meta_data":816},{},[],[],[],[],[],[],"product-security","help\u002Fcategories\u002Fproduct-security",-420,[],"9b6ea296-0666-48d6-b896-39e524ea24ac",[],{},1784562224574]