[{"data":1,"prerenderedAt":1214},["ShallowReactive",2],{"header:help":3,"footer:default":63,"story:navigation\u002Fsearch:help":243,"story:help\u002Fcategories":281,"story:help\u002Fcategories\u002Ftransaction-webhook-legacy":307,"help:guides:e8d2f9b0-fa4e-4565-8b61-b3d5aa5ce513":334,"help:categories:e8d2f9b0-fa4e-4565-8b61-b3d5aa5ce513":335,"help:tree:e8d2f9b0-fa4e-4565-8b61-b3d5aa5ce513:default":336,"help:articles:e8d2f9b0-fa4e-4565-8b61-b3d5aa5ce513":361,"story:contact":1024,"_apollo:default":1213},{"name":4,"created_at":5,"published_at":6,"updated_at":7,"id":8,"uuid":9,"content":10,"slug":53,"full_slug":54,"sort_by_date":55,"position":56,"tag_list":57,"is_startpage":24,"parent_id":58,"meta_data":55,"group_id":59,"first_published_at":60,"release_id":55,"lang":61,"path":55,"alternates":62,"default_full_slug":55,"translated_slugs":55},"Help Center Header","2024-08-09T18:06:34.939Z","2026-07-30T21:52:27.962Z","2026-07-30T21:52:27.975Z",10082752,"3e9b88f7-c163-4657-a2f2-62532d600fad",{"_uid":11,"link":12,"badge":16,"items":17,"title":13,"buttons":45,"new_tab":24,"submenu":46,"subitems":47,"alignment":13,"component":48,"badge_link":49,"top_menu_items":52},"e5645a1a-f991-40e8-8d67-e40ebc082b5a",{"id":13,"url":13,"linktype":14,"fieldtype":15,"cached_url":13},"","story","multilink","Help Center",[18,27,34,39],{"_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},"8d7df70e-f087-4da0-b616-6f0e9a5af35c",{"id":13,"url":30,"linktype":31,"fieldtype":15,"cached_url":30},"https:\u002F\u002Fapi.foxycart.com\u002F","url","API Documentation",true,{"_uid":35,"link":36,"title":38,"new_tab":33,"component":26},"f76e7944-23d5-4652-87e4-cdae79272762",{"id":13,"url":37,"linktype":31,"fieldtype":15,"cached_url":37},"https:\u002F\u002Fstatus.foxy.io\u002F","System Status",{"_uid":40,"link":41,"title":44,"new_tab":24,"component":26},"0de16771-4c84-466c-a1da-d8568113c71f",{"id":42,"url":13,"linktype":14,"fieldtype":15,"cached_url":43},"01e4e370-f9b9-45af-8fa9-f15540699b0d","contact","Contact Us",[],[],[],"header",{"id":50,"url":13,"linktype":14,"fieldtype":15,"cached_url":51},"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":64,"created_at":65,"published_at":66,"updated_at":67,"id":68,"uuid":69,"content":70,"slug":236,"full_slug":237,"sort_by_date":55,"position":238,"tag_list":239,"is_startpage":24,"parent_id":58,"meta_data":55,"group_id":240,"first_published_at":241,"release_id":55,"lang":61,"path":55,"alternates":242,"default_full_slug":55,"translated_slugs":55},"Default Footer","2024-08-09T18:06:59.024Z","2026-07-30T21:52:27.802Z","2026-07-30T21:52:27.816Z",10082753,"e59e67ac-248a-482f-84a1-53d4f318186a",{"_uid":71,"about":72,"logos":73,"socials":78,"sections":104,"component":218,"cta_title":219,"bottom_links":220,"cta_subtitle":234,"cta_button_link":235,"cta_button_text":179},"830983f5-c4c4-43c8-b150-86a5e3fa6dc8","Foxy’s hosted cart & payment page allow you to sell anything, using your existing website or platform.",[74],{"id":75,"alt":13,"name":13,"focus":13,"title":13,"filename":76,"copyright":13,"fieldtype":77},14760,"https:\u002F\u002Fa-us.storyblok.com\u002Ff\u002F1001040\u002Fx\u002F3b030847ec\u002Fb-corp.svg","asset",[79,86,92,98],{"_uid":80,"icon":81,"link":82,"name":84,"component":85},"faf0a618-ea94-42ea-9182-03be18c43216","fa-facebook",{"id":13,"url":83,"linktype":31,"fieldtype":15,"cached_url":83},"https:\u002F\u002Fwww.facebook.com\u002Ffoxycart","Facebook","footer___social",{"_uid":87,"icon":88,"link":89,"name":91,"component":85},"14309c18-7e79-423e-b375-34555bac0811","fa-instagram",{"id":13,"url":90,"linktype":31,"fieldtype":15,"cached_url":90},"https:\u002F\u002Fwww.instagram.com\u002Ffoxy_io","Instagram",{"_uid":93,"icon":94,"link":95,"name":97,"component":85},"8f7fe7cf-0dd3-4596-8334-226ea466716a","fa-linkedin",{"id":13,"url":96,"linktype":31,"fieldtype":15,"cached_url":96},"https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Ffoxycart.com","LinkedIn",{"_uid":99,"icon":100,"link":101,"name":103,"component":85},"90a675b4-dd97-40b5-be09-00a87223d4c5","fa-youtube",{"id":13,"url":102,"linktype":31,"fieldtype":15,"cached_url":102},"https:\u002F\u002Fwww.youtube.com\u002Fuser\u002Ffoxycart","Youtube",[105,135,180,202],{"_uid":106,"name":107,"items":108,"component":134},"82849945-282f-488c-b18d-a8d2252f514a","Company",[109,116,122,128],{"_uid":110,"link":111,"title":114,"new_tab":24,"component":115},"1f699ab1-938b-4d9d-9825-aabcbe6f57fe",{"id":112,"url":13,"linktype":14,"fieldtype":15,"cached_url":113},"63634293-a749-4226-9439-9f38ee6dcda0","about-us","About Us","footer___menu_items",{"_uid":117,"link":118,"title":121,"new_tab":24,"component":115},"b26b00f1-a0e7-4be2-8ab3-428b8cc841f8",{"id":119,"url":13,"linktype":14,"fieldtype":15,"cached_url":120},"26cb7c55-faed-4a77-a291-1552d4111b3e","how-foxy-works","How Foxy Works",{"_uid":123,"link":124,"title":127,"new_tab":24,"component":115},"b40c68a0-1ceb-4226-9515-6176534f61fe",{"id":125,"url":13,"linktype":14,"fieldtype":15,"cached_url":126},"dc6657d7-7f4f-4c0d-b781-e971b038ee26","for-good","Foxy For Good",{"_uid":129,"link":130,"title":133,"new_tab":24,"component":115},"3ad0c134-bef9-4fff-b891-e09f16109036",{"id":131,"url":13,"linktype":14,"fieldtype":15,"cached_url":132},"23cae210-baf4-4588-9862-d09f4f52ccd2","brand-assets","Brand Assets","footer___section",{"_uid":136,"name":137,"items":138,"component":134},"a6805fa8-ac60-47f1-b8f0-f27aded0afbe","Product",[139,145,151,157,163,169,175],{"_uid":140,"link":141,"title":144,"new_tab":24,"component":115},"b39c8a4e-2383-486f-b76a-11fbb15d8134",{"id":142,"url":13,"linktype":14,"fieldtype":15,"cached_url":143},"bb04690f-fe98-4ce6-80be-05b950f2364f","features\u002F","Features",{"_uid":146,"link":147,"title":150,"new_tab":24,"component":115},"64f8a41f-c181-433d-bc0a-fc94e71ecbf6",{"id":148,"url":13,"linktype":14,"fieldtype":15,"cached_url":149},"c450c58d-761d-48c0-a9af-0b064611689b","pricing","Pricing",{"_uid":152,"link":153,"title":156,"new_tab":24,"component":115},"6e0b287f-fd8c-4146-9e0e-0ab0b5c9ce3c",{"id":154,"url":13,"linktype":14,"fieldtype":15,"cached_url":155},"fab20ad9-e76a-4947-b709-3a6fdfa88028","blog\u002Fcategories\u002Fproduct-updates","Product Updates",{"_uid":158,"link":159,"title":162,"new_tab":24,"component":115},"47e5a074-a6b5-4f1c-8c2f-89a2ae9f83eb",{"id":160,"url":13,"linktype":14,"fieldtype":15,"cached_url":161},"d2c83612-d611-47f3-a3b4-ca7fe08540b8","changelogs\u002F","Changelogs",{"_uid":164,"link":165,"title":168,"new_tab":24,"component":115},"b5c08774-542f-4ffd-b357-c94d674488b9",{"id":166,"url":13,"linktype":14,"fieldtype":15,"cached_url":167},"08876121-0df3-4ed9-aa11-902b3e41cd02","whats-next","What's Next",{"_uid":170,"link":171,"title":174,"new_tab":24,"component":115},"9c2704ed-6d9f-43e1-9e67-c8d91c083288",{"id":172,"url":13,"linktype":14,"fieldtype":15,"cached_url":173},"056a7857-b18f-4025-8f97-91a38fc19bc8","compare\u002F","Compare",{"_uid":176,"link":177,"title":179,"new_tab":24,"component":115},"5f2db35b-674b-406a-8fa7-d246633af9fe",{"id":13,"url":178,"linktype":31,"fieldtype":15,"cached_url":178},"https:\u002F\u002Fadmin.foxy.io\u002Fsign-up","Try Foxy Free",{"_uid":181,"name":182,"items":183,"component":134},"63fa1f29-4252-4640-9922-fe310e69e54a","Security",[184,190,196],{"_uid":185,"link":186,"title":189,"new_tab":24,"component":115},"1158ddb6-9eb0-466f-8eb6-7ca2ae66c8b8",{"id":187,"url":13,"linktype":14,"fieldtype":15,"cached_url":188},"1f58fb2c-8681-4742-b6e8-09999beae9f6","security-contact","Security Contact",{"_uid":191,"link":192,"title":195,"new_tab":24,"component":115},"9a79c54a-6022-4dfd-854b-766f5e4703ba",{"id":193,"url":13,"linktype":14,"fieldtype":15,"cached_url":194},"55cbfcc3-425a-4261-8037-54e919851d2d","pci","PCI Compliance",{"_uid":197,"link":198,"title":201,"new_tab":24,"component":115},"0b85f5b6-9534-4071-b323-b39d053dd4d7",{"id":199,"url":13,"linktype":14,"fieldtype":15,"cached_url":200},"c3ac0fe3-83e2-4879-afbd-d4c83e1590df","help\u002Farticles\u002Four-official-domains-public-code","Domains & Codebases",{"_uid":203,"name":204,"items":205,"component":134},"998ded67-d107-49f4-8154-ca6be51671ec","Support",[206,209,212,215],{"_uid":207,"link":208,"title":16,"new_tab":24,"component":115},"594ffd35-3049-4004-bb08-0db568ebd819",{"id":50,"url":13,"linktype":14,"fieldtype":15,"cached_url":51},{"_uid":210,"link":211,"title":32,"new_tab":33,"component":115},"61e0b7c8-aadf-419b-a339-b3ccabc65bf4",{"id":13,"url":30,"linktype":31,"fieldtype":15,"cached_url":30},{"_uid":213,"link":214,"title":38,"new_tab":33,"component":115},"fd67a89e-1c54-4d31-94b5-64be999062d6",{"id":13,"url":37,"linktype":31,"fieldtype":15,"cached_url":37},{"_uid":216,"link":217,"title":44,"new_tab":24,"component":115},"231a6f71-e996-4ad4-b033-d4d5542f34f0",{"id":42,"url":13,"linktype":14,"fieldtype":15,"cached_url":43},"footer","Get started with our *unlimited free trial*.",[221,228],{"_uid":222,"link":223,"text":226,"component":227},"f0b77210-2632-45a2-8436-e57cad84d01a",{"id":224,"url":13,"linktype":14,"fieldtype":15,"cached_url":225},"60ba16a2-c1f4-485f-b978-8d2eeeafbf5a","terms-of-service","Terms of Service","footer___bottom_links",{"_uid":229,"link":230,"text":233,"component":227},"4bd497b0-993f-4b4d-a5b7-8a49c7c8fec9",{"id":231,"url":13,"linktype":14,"fieldtype":15,"cached_url":232},"332302b9-1d18-4016-b9c8-9b33c72d782b","privacy-policy","Privacy Policy","No credit card required.",{"id":13,"url":178,"linktype":31,"fieldtype":15,"cached_url":178},"default-footer","navigation\u002Fdefault-footer",50,[],"11006268-07f9-41e9-96f3-c51fb723399d","2022-09-21T20:39:02.357Z",[],{"name":244,"created_at":245,"published_at":246,"updated_at":247,"id":248,"uuid":249,"content":250,"slug":272,"full_slug":275,"sort_by_date":55,"position":276,"tag_list":277,"is_startpage":24,"parent_id":58,"meta_data":55,"group_id":278,"first_published_at":279,"release_id":55,"lang":61,"path":55,"alternates":280,"default_full_slug":55,"translated_slugs":55},"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":251,"name":244,"indices":252,"summary":13,"component":272,"primary_image":273},"5e4a56e8-76f1-4790-b3a7-70f1be97d042",[253,258,262,267],{"key":254,"_uid":255,"icon":13,"name":256,"component":257},"all","c12a3210-7323-4273-8217-5215e52efe84","All","index",{"key":259,"_uid":260,"icon":261,"name":23,"component":257},"help_center_article","5acff080-95e4-44d3-8dcf-1b19720af382","fa-file-alt",{"key":263,"_uid":264,"icon":265,"name":266,"component":257},"help_center_guide","b8fbc206-c083-471e-a1f0-0ebeb90a669d","fa-book","Guides",{"key":268,"_uid":269,"icon":270,"name":271,"component":257},"blog_post","23419e83-2e56-4c4c-8a05-9fd1b3c9a9bd","fa-file-image","Blog Posts","search",{"id":55,"alt":55,"name":13,"focus":55,"title":55,"source":55,"filename":13,"copyright":55,"fieldtype":77,"meta_data":274},{},"navigation\u002Fsearch",60,[],"11e1fd31-95cd-4fc9-b736-8b8910663e6c","2024-10-21T23:17:05.904Z",[],{"name":23,"created_at":282,"published_at":283,"updated_at":284,"id":285,"uuid":21,"content":286,"slug":300,"full_slug":22,"sort_by_date":55,"position":301,"tag_list":302,"is_startpage":33,"parent_id":303,"meta_data":55,"group_id":304,"first_published_at":305,"release_id":55,"lang":61,"path":55,"alternates":306,"default_full_slug":55,"translated_slugs":55},"2022-09-19T14:42:29.685Z","2024-07-30T18:17:22.506Z","2024-07-30T18:17:22.525Z",2660,{"_uid":287,"icon":13,"name":23,"guides":288,"pinned":24,"summary":289,"category":13,"component":290,"blog_posts":291,"content_hub":24,"icon_custom":292,"case_studies":293,"faq_sections":294,"help_articles":295,"featured_guides":296,"mailbox_category":13,"featured_articles":297,"featured_blog_posts":298,"featured_case_studies":299},"d6dae89a-907a-4bf7-82de-fe2ba875ee6e",[],"Get your questions answered with our browsable knowledge base.","help_center_category",[],{"id":55,"alt":55,"name":13,"focus":55,"title":55,"filename":13,"copyright":55,"fieldtype":77},[],[],[],[],[],[],[],"categories",530,[],2658,"19ebcdd2-027f-47f5-9a5b-a8992c959578","2022-09-19T16:24:39.219Z",[],{"name":308,"created_at":309,"published_at":310,"updated_at":311,"id":312,"uuid":313,"content":314,"slug":328,"full_slug":329,"sort_by_date":55,"position":330,"tag_list":331,"is_startpage":24,"parent_id":303,"meta_data":55,"group_id":332,"first_published_at":310,"release_id":55,"lang":61,"path":55,"alternates":333,"default_full_slug":55,"translated_slugs":55},"Transaction Webhook (Legacy)","2026-07-20T19:38:44.711Z","2026-07-20T19:41:26.417Z","2026-07-20T19:41:26.430Z",200240024467272,"e8d2f9b0-fa4e-4565-8b61-b3d5aa5ce513",{"_uid":315,"icon":13,"name":308,"type":316,"pinned":24,"summary":317,"category":318,"component":290,"blog_posts":319,"icon_custom":320,"case_studies":322,"faq_sections":323,"featured_guides":324,"mailbox_category":13,"featured_articles":325,"featured_blog_posts":326,"featured_case_studies":327},"37b0e372-28ce-41d0-ab2c-1af017ea8ce5","simple","Set up and verify payloads from the legacy JSON webhook, replaced by the current transaction webhook.","5f8f8006-b68e-4a03-8638-2d28a556726e",[],{"id":55,"alt":55,"name":13,"focus":55,"title":55,"source":55,"filename":13,"copyright":55,"fieldtype":77,"meta_data":321},{},[],[],[],[],[],[],"transaction-webhook-legacy","help\u002Fcategories\u002Ftransaction-webhook-legacy",-780,[],"5cbd4acd-a81b-400c-a30c-3af22768e9ea",[],[],[],[281,337],{"name":338,"created_at":339,"published_at":340,"updated_at":341,"id":342,"uuid":318,"content":343,"slug":355,"full_slug":356,"sort_by_date":55,"position":357,"tag_list":358,"is_startpage":24,"parent_id":303,"meta_data":55,"group_id":359,"first_published_at":340,"release_id":55,"lang":61,"path":55,"alternates":360,"default_full_slug":55,"translated_slugs":55},"Webhooks","2026-07-20T19:37:26.231Z","2026-07-20T19:41:27.137Z","2026-07-20T19:41:27.157Z",200239703052833,{"_uid":344,"icon":13,"name":338,"type":316,"pinned":24,"summary":345,"category":13,"component":290,"blog_posts":346,"icon_custom":347,"case_studies":349,"faq_sections":350,"featured_guides":351,"mailbox_category":13,"featured_articles":352,"featured_blog_posts":353,"featured_case_studies":354},"c8a9b798-94ba-4a83-9ba5-c851b17946df","Send real-time event notifications to your own endpoint when transactions, subscriptions, and customers change.",[],{"id":55,"alt":55,"name":13,"focus":55,"title":55,"source":55,"filename":13,"copyright":55,"fieldtype":77,"meta_data":348},{},[],[],[],[],[],[],"webhooks","help\u002Fcategories\u002Fwebhooks",-750,[],"c59e6243-064a-4f06-a367-c14a15c02ff3",[],[362,500,638],{"name":363,"created_at":364,"published_at":365,"updated_at":366,"id":367,"uuid":368,"content":369,"slug":493,"full_slug":494,"sort_by_date":55,"position":495,"tag_list":496,"is_startpage":24,"parent_id":497,"meta_data":55,"group_id":498,"first_published_at":365,"release_id":55,"lang":61,"path":55,"alternates":499,"default_full_slug":55,"translated_slugs":55},"Create a legacy webhook","2026-07-20T20:09:31.662Z","2026-07-20T20:30:29.807Z","2026-07-20T20:30:29.821Z",200247589574509,"cd9507b0-d101-4aa1-9a04-327bb654e640",{"_uid":370,"body":371,"name":363,"image":489,"pinned":24,"summary":491,"category":313,"component":259,"related_articles":492},"340277ba-b7ce-447e-874c-beab50db68d4",{"type":372,"content":373},"doc",[374,390,397,476],{"type":375,"attrs":376,"content":377},"paragraph",{"textAlign":55},[378,381,388],{"text":379,"type":380},"The following is for the legacy webhook functionality. If you’re creating a new webhook, use ","text",{"text":382,"type":380,"marks":383},"Create a transaction webhook",[384],{"type":385,"attrs":386},"link",{"href":387,"uuid":55,"anchor":55,"target":55,"linktype":31},"https:\u002F\u002Ffoxy.io\u002Fhelp\u002Farticles\u002Fcreate-a-transaction-webhook",{"text":389,"type":380}," instead.",{"type":391,"attrs":392,"content":394},"heading",{"level":393,"textAlign":55},2,[395],{"text":396,"type":380},"Steps",{"type":398,"attrs":399,"content":401},"ordered_list",{"order":400},1,[402,417,430,437,450,463],{"type":403,"content":404},"list_item",[405],{"type":375,"attrs":406,"content":407},{"textAlign":55},[408,410,415],{"text":409,"type":380},"Go to the ",{"text":411,"type":380,"marks":412},"Integrations",[413],{"type":414},"bold",{"text":416,"type":380}," section of your store’s administration.",{"type":403,"content":418},[419],{"type":375,"attrs":420,"content":421},{"textAlign":55},[422,424,428],{"text":423,"type":380},"Enable the ",{"text":425,"type":380,"marks":426},"JSON Webhooks",[427],{"type":414},{"text":429,"type":380}," checkbox.",{"type":403,"content":431},[432],{"type":375,"attrs":433,"content":434},{"textAlign":55},[435],{"text":436,"type":380},"Enter a name to identify the webhook, and the URL of the endpoint that will receive the payload.",{"type":403,"content":438},[439],{"type":375,"attrs":440,"content":441},{"textAlign":55},[442,444,448],{"text":443,"type":380},"An encryption key is set automatically. To use your own, click ",{"text":445,"type":380,"marks":446},"Show secret",[447],{"type":414},{"text":449,"type":380}," and enter your own secure key.",{"type":403,"content":451},[452],{"type":375,"attrs":453,"content":454},{"textAlign":55},[455,457,461],{"text":456,"type":380},"To add additional endpoints, click ",{"text":458,"type":380,"marks":459},"Add one more URL",[460],{"type":414},{"text":462,"type":380},".",{"type":403,"content":464},[465],{"type":375,"attrs":466,"content":467},{"textAlign":55},[468,470,474],{"text":469,"type":380},"Click ",{"text":471,"type":380,"marks":472},"Update Webhooks",[473],{"type":414},{"text":475,"type":380}," to save.",{"type":375,"attrs":477,"content":478},{"textAlign":55},[479,481,487],{"text":480,"type":380},"See ",{"text":482,"type":380,"marks":483},"Legacy webhook events reference",[484],{"type":385,"attrs":485},{"href":486,"uuid":55,"anchor":55,"target":55,"linktype":31},"https:\u002F\u002Ffoxy.io\u002Fhelp\u002Farticles\u002Flegacy-webhook-events-reference",{"text":488,"type":380}," for the events this webhook can trigger on.",{"id":55,"alt":55,"name":13,"focus":55,"title":55,"source":55,"filename":13,"copyright":55,"fieldtype":77,"meta_data":490},{},"How to create a legacy JSON webhook and which events it supports.",[],"create-a-legacy-webhook","help\u002Farticles\u002Fcreate-a-legacy-webhook",-3910,[],2659,"c1a2bc3e-b8db-4210-851b-18f0d3c4e127",[],{"name":482,"created_at":501,"published_at":502,"updated_at":503,"id":504,"uuid":505,"content":506,"slug":632,"full_slug":633,"sort_by_date":55,"position":634,"tag_list":635,"is_startpage":24,"parent_id":497,"meta_data":55,"group_id":636,"first_published_at":502,"release_id":55,"lang":61,"path":55,"alternates":637,"default_full_slug":55,"translated_slugs":55},"2026-07-20T20:10:45.957Z","2026-07-20T20:30:28.805Z","2026-07-20T20:30:28.821Z",200247893890927,"f9c2acab-af7b-46dd-b732-6d72951ad1d2",{"_uid":507,"body":508,"name":482,"image":628,"pinned":24,"summary":630,"category":313,"component":259,"related_articles":631},"4ca3387a-e893-4f6d-8a22-4fca73c81a1c",{"type":372,"content":509},[510],{"type":511,"content":512},"table",[513,533,552,570,613],{"type":514,"content":515},"tableRow",[516,525],{"type":517,"attrs":518,"content":519},"tableHeader",{"colspan":400,"rowspan":400,"colwidth":55},[520],{"type":375,"attrs":521,"content":522},{"textAlign":55},[523],{"text":524,"type":380},"Event",{"type":517,"attrs":526,"content":527},{"colspan":400,"rowspan":400,"colwidth":55},[528],{"type":375,"attrs":529,"content":530},{"textAlign":55},[531],{"text":532,"type":380},"Triggered when",{"type":514,"content":534},[535,544],{"type":536,"attrs":537,"content":538},"tableCell",{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[539],{"type":375,"attrs":540,"content":541},{"textAlign":55},[542],{"text":543,"type":380},"Transaction Created",{"type":536,"attrs":545,"content":546},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[547],{"type":375,"attrs":548,"content":549},{"textAlign":55},[550],{"text":551,"type":380},"Any transaction for the store — a new transaction, a subscription renewal, a customer info update, or a customer-initiated subscription cancel (which sets a future subscription end date). All of these generate a transaction, so all are sent to the endpoint",{"type":514,"content":553},[554,562],{"type":536,"attrs":555,"content":556},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[557],{"type":375,"attrs":558,"content":559},{"textAlign":55},[560],{"text":561,"type":380},"Transaction Captured \u002F Refunded \u002F Voided",{"type":536,"attrs":563,"content":564},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[565],{"type":375,"attrs":566,"content":567},{"textAlign":55},[568],{"text":569,"type":380},"Relies on beta transaction editing functionality, enabled per store. Fires when an existing transaction is manually captured, refunded, or voided — through the transaction report section of the administration, or through the API. The Captured event here applies to a previously uncaptured transaction (verified or authorized) that is then manually captured. The original transaction would already have triggered Transaction Created; this event reflects the change in payment status",{"type":514,"content":571},[572,580],{"type":536,"attrs":573,"content":574},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[575],{"type":375,"attrs":576,"content":577},{"textAlign":55},[578],{"text":579,"type":380},"Subscription Cancelled",{"type":536,"attrs":581,"content":582},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[583],{"type":375,"attrs":584,"content":585},{"textAlign":55},[586,588,593,595,599,601,605,607,611],{"text":587,"type":380},"Fires when a subscription actually ends, on its end date. Subscriptions made inactive directly via the administration or API do not trigger this event. Customers completing a ",{"text":589,"type":380,"marks":590},"sub_cancel",[591],{"type":592},"code",{"text":594,"type":380}," checkout also don’t trigger it — that sets the subscription’s end date to tomorrow or the next transaction date (depending on store settings) and instead triggers a Transaction Created event, with a ",{"text":596,"type":380,"marks":597},"transaction_type",[598],{"type":592},{"text":600,"type":380}," of ",{"text":602,"type":380,"marks":603},"subscription_cancellation",[604],{"type":592},{"text":606,"type":380}," and the new ",{"text":608,"type":380,"marks":609},"subscription_end_date",[610],{"type":592},{"text":612,"type":380}," set on the subscription product",{"type":514,"content":614},[615,623],{"type":536,"attrs":616,"content":617},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[618],{"type":375,"attrs":619,"content":620},{"textAlign":55},[621],{"text":622,"type":380},"\u003C\u002Fparameter>",{"type":536,"attrs":624,"content":625},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[626],{"type":375,"attrs":627},{"textAlign":55},{"id":55,"alt":55,"name":13,"focus":55,"title":55,"source":55,"filename":13,"copyright":55,"fieldtype":77,"meta_data":629},{},"The events the legacy JSON webhook supports, and how each one is triggered.",[],"legacy-webhook-events-reference","help\u002Farticles\u002Flegacy-webhook-events-reference",-3920,[],"f01dfdef-b331-4c97-ac8d-19871fd57bef",[],{"name":639,"created_at":640,"published_at":641,"updated_at":642,"id":643,"uuid":644,"content":645,"slug":1018,"full_slug":1019,"sort_by_date":55,"position":1020,"tag_list":1021,"is_startpage":24,"parent_id":497,"meta_data":55,"group_id":1022,"first_published_at":641,"release_id":55,"lang":61,"path":55,"alternates":1023,"default_full_slug":55,"translated_slugs":55},"Verify and decrypt a legacy webhook payload","2026-07-20T20:12:40.865Z","2026-07-20T20:30:27.769Z","2026-07-20T20:30:27.788Z",200248364550000,"28cc0197-ada9-4bc1-8f15-0c510581d86b",{"_uid":646,"body":647,"name":639,"image":1014,"pinned":24,"summary":1016,"category":313,"component":259,"related_articles":1017},"a33f195f-6a8d-487c-bad0-7ffb5ecbe3bc",{"type":372,"content":648},[649,654,659,664,809,814,830,835,841,846,894,898,903,908,919,924,973,978,983,988,993,998],{"type":375,"attrs":650,"content":651},{"textAlign":55},[652],{"text":653,"type":380},"Once configured, a JSON payload is sent to your endpoint whenever a subscribed event occurs. If your endpoint is secured with HTTPS, the payload is sent unencrypted, ready to use. If your endpoint isn’t secured, the payload is encrypted with AES-256-CBC before being sent, and needs to be decrypted before use.",{"type":391,"attrs":655,"content":656},{"level":393,"textAlign":55},[657],{"text":658,"type":380},"Headers",{"type":375,"attrs":660,"content":661},{"textAlign":55},[662],{"text":663,"type":380},"Every legacy webhook request includes these headers:",{"type":511,"content":665},[666,684,729,749,769,789],{"type":514,"content":667},[668,676],{"type":517,"attrs":669,"content":670},{"colspan":400,"rowspan":400,"colwidth":55},[671],{"type":375,"attrs":672,"content":673},{"textAlign":55},[674],{"text":675,"type":380},"Header",{"type":517,"attrs":677,"content":678},{"colspan":400,"rowspan":400,"colwidth":55},[679],{"type":375,"attrs":680,"content":681},{"textAlign":55},[682],{"text":683,"type":380},"Description",{"type":514,"content":685},[686,696],{"type":536,"attrs":687,"content":688},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[689],{"type":375,"attrs":690,"content":691},{"textAlign":55},[692],{"text":693,"type":380,"marks":694},"Foxy-Webhook-Event",[695],{"type":592},{"type":536,"attrs":697,"content":698},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[699],{"type":375,"attrs":700,"content":701},{"textAlign":55},[702,704,708,710,714,715,719,720,724,725],{"text":703,"type":380},"Name of the event that triggered this payload. Currently ",{"text":705,"type":380,"marks":706},"transaction\u002Fcreated",[707],{"type":592},{"text":709,"type":380},", ",{"text":711,"type":380,"marks":712},"transaction\u002Fcaptured",[713],{"type":592},{"text":709,"type":380},{"text":716,"type":380,"marks":717},"transaction\u002Frefunded",[718],{"type":592},{"text":709,"type":380},{"text":721,"type":380,"marks":722},"transaction\u002Fvoided",[723],{"type":592},{"text":709,"type":380},{"text":726,"type":380,"marks":727},"subscription\u002Fcancelled",[728],{"type":592},{"type":514,"content":730},[731,741],{"type":536,"attrs":732,"content":733},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[734],{"type":375,"attrs":735,"content":736},{"textAlign":55},[737],{"text":738,"type":380,"marks":739},"Foxy-Webhook-Signature",[740],{"type":592},{"type":536,"attrs":742,"content":743},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[744],{"type":375,"attrs":745,"content":746},{"textAlign":55},[747],{"text":748,"type":380},"An HMAC SHA256 signature of the payload, using the webhook’s encryption key. Used to verify the contents of the payload",{"type":514,"content":750},[751,761],{"type":536,"attrs":752,"content":753},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[754],{"type":375,"attrs":755,"content":756},{"textAlign":55},[757],{"text":758,"type":380,"marks":759},"Foxy-Webhook-Refeed",[760],{"type":592},{"type":536,"attrs":762,"content":763},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[764],{"type":375,"attrs":765,"content":766},{"textAlign":55},[767],{"text":768,"type":380},"A boolean signifying whether this payload has been refed. If false, this is the first time this instance of the event has been triggered",{"type":514,"content":770},[771,781],{"type":536,"attrs":772,"content":773},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[774],{"type":375,"attrs":775,"content":776},{"textAlign":55},[777],{"text":778,"type":380,"marks":779},"Foxy-Store-ID",[780],{"type":592},{"type":536,"attrs":782,"content":783},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[784],{"type":375,"attrs":785,"content":786},{"textAlign":55},[787],{"text":788,"type":380},"The ID of the store this webhook was triggered for",{"type":514,"content":790},[791,801],{"type":536,"attrs":792,"content":793},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[794],{"type":375,"attrs":795,"content":796},{"textAlign":55},[797],{"text":798,"type":380,"marks":799},"Foxy-Store-Domain",[800],{"type":592},{"type":536,"attrs":802,"content":803},{"colspan":400,"rowspan":400,"colwidth":55,"backgroundColor":55},[804],{"type":375,"attrs":805,"content":806},{"textAlign":55},[807],{"text":808,"type":380},"The store domain this webhook was triggered for",{"type":391,"attrs":810,"content":811},{"level":393,"textAlign":55},[812],{"text":813,"type":380},"Example payloads",{"type":375,"attrs":815,"content":816},{"textAlign":55},[817,819,823,825,828],{"text":818,"type":380},"The payload follows the same structure as the Hypermedia API. Most objects include the API’s ",{"text":820,"type":380,"marks":821},"_links",[822],{"type":592},{"text":824,"type":380}," array, which contains URIs you can use to access the resource in the API if you’re also using it — these can be safely ignored otherwise. In the examples below, ",{"text":820,"type":380,"marks":826},[827],{"type":592},{"text":829,"type":380}," arrays have been cleared out to save space.",{"type":391,"attrs":831,"content":833},{"level":832,"textAlign":55},3,[834],{"text":543,"type":380},{"type":836,"attrs":837,"content":838},"code_block",{"class":55},[839],{"text":840,"type":380},"{\n    \"_embedded\": {\n        \"fx:applied_taxes\": [\n            {\n                \"_links\": { },\n                \"amount\": 2.24,\n                \"apply_to_handling\": true,\n                \"apply_to_shipping\": true,\n                \"date_created\": null,\n                \"date_modified\": null,\n                \"is_future_tax\": false,\n                \"name\": \"Global Tax\",\n                \"rate\": 5,\n                \"shipto\": null\n            }\n        ],\n        \"fx:billing_addresses\": [\n            {\n                \"_links\": { },\n                \"address1\": \"123 Test Street\",\n                \"address2\": \"Level 2\",\n                \"address_name\": \"Default Billing Address\",\n                \"city\": \"SAINT PAUL\",\n                \"company\": \"Some Company\",\n                \"customer_country\": \"US\",\n                \"customer_phone\": \"123456789\",\n                \"customer_postal_code\": \"55115\",\n                \"date_created\": null,\n                \"date_modified\": \"2018-03-01T00:00:00-0700\",\n                \"first_name\": \"John\",\n                \"last_name\": \"Smith\",\n                \"region\": \"MN\"\n            }\n        ],\n        \"fx:custom_fields\": [\n            {\n                \"_links\": { },\n                \"date_created\": null,\n                \"date_modified\": null,\n                \"is_hidden\": true,\n                \"name\": \"custom_attribute\",\n                \"value\": \"reseller\"\n            },\n            {\n                \"_links\": { },\n                \"date_created\": null,\n                \"date_modified\": null,\n                \"is_hidden\": false,\n                \"name\": \"newsletter_subscribe\",\n                \"value\": \"1\"\n            }\n        ],\n        \"fx:customer\": {\n            \"_links\": { },\n            \"date_created\": null,\n            \"date_modified\": null,\n            \"email\": \"john@example.com\",\n            \"first_name\": \"John\",\n            \"forgot_password\": null,\n            \"forgot_password_timestamp\": null,\n            \"id\": 12345,\n            \"is_anonymous\": false,\n            \"last_login_date\": \"2018-03-01T00:00:00-0700\",\n            \"last_name\": \"Smith\",\n            \"password_hash\": \"$2y$13$Jx7p31h18VnW.ab38QaYJu1QCzsyMQZKdY5s21nYewmGQj0OQCyIq\",\n            \"password_hash_config\": \"13\",\n            \"password_hash_type\": \"bcrypt\",\n            \"password_salt\": null,\n            \"tax_id\": null\n        },\n        \"fx:discounts\": [\n            {\n                \"_links\": { },\n                \"amount\": -3.79,\n                \"code\": \"my-code\",\n                \"date_created\": null,\n                \"date_modified\": null,\n                \"display\": \"-$3.79\",\n                \"is_future_discount\": false,\n                \"is_taxable\": false,\n                \"name\": \"Special Offer\"\n            }\n        ],\n        \"fx:items\": [\n            {\n                \"_embedded\": {\n                    \"fx:item_category\": {\n                        \"_links\": { },\n                        \"admin_email\": null,\n                        \"admin_email_template_uri\": null,\n                        \"code\": \"DEFAULT\",\n                        \"customer_email_template_uri\": null,\n                        \"customs_value\": 0,\n                        \"date_created\": null,\n                        \"date_modified\": null,\n                        \"default_length_unit\": \"IN\",\n                        \"default_weight\": 0,\n                        \"default_weight_unit\": \"LBS\",\n                        \"discount_details\": \"single|3-5|5-10\",\n                        \"discount_name\": \"Bulk Order\",\n                        \"discount_type\": \"quantity_percentage\",\n                        \"handling_fee\": 1,\n                        \"handling_fee_minimum\": 0,\n                        \"handling_fee_percentage\": 80,\n                        \"handling_fee_type\": \"none\",\n                        \"item_delivery_type\": \"flat_rate\",\n                        \"max_downloads_per_customer\": 3,\n                        \"max_downloads_time_period\": 24,\n                        \"name\": \"Default for all products\",\n                        \"send_admin_email\": false,\n                        \"send_customer_email\": false,\n                        \"shipping_flat_rate\": 2,\n                        \"shipping_flat_rate_type\": \"per_item\"\n                    },\n                    \"fx:item_options\": [\n                        {\n                            \"_links\": { },\n                            \"date_created\": null,\n                            \"date_modified\": null,\n                            \"name\": \"size\",\n                            \"price_mod\": 0,\n                            \"value\": \"Large\",\n                            \"weight_mod\": 0\n                        },\n                        {\n                            \"_links\": { },\n                            \"date_created\": null,\n                            \"date_modified\": null,\n                            \"name\": \"color\",\n                            \"price_mod\": 0,\n                            \"value\": \"Blue\",\n                            \"weight_mod\": 0\n                        },\n                        {\n                            \"_links\": { },\n                            \"date_created\": null,\n                            \"date_modified\": null,\n                            \"name\": \"Bulk Order\",\n                            \"price_mod\": -0.11,\n                            \"value\": \"-2%\",\n                            \"weight_mod\": 0\n                        }\n                    ]\n                },\n                \"_links\": { },\n                \"base_price\": 5.5,\n                \"code\": \"my-widget\",\n                \"date_created\": null,\n                \"date_modified\": \"2018-03-01T00:00:00-0700\",\n                \"delivery_type\": \"flat_rate\",\n                \"discount_details\": null,\n                \"discount_name\": null,\n                \"discount_type\": null,\n                \"downloadable_url\": null,\n                \"expires\": 0,\n                \"height\": 0,\n                \"image\": null,\n                \"is_future_line_item\": false,\n                \"item_category_uri\": \"https:\u002F\u002Fapi.foxycart.com\u002Fitem_categories\u002F100\",\n                \"length\": 0,\n                \"name\": \"My Widget\",\n                \"parent_code\": null,\n                \"price\": 5.5,\n                \"quantity\": 5,\n                \"quantity_max\": 0,\n                \"quantity_min\": 0,\n                \"shipto\": null,\n                \"sub_token_url\": null,\n                \"subscription_end_date\": null,\n                \"subscription_frequency\": null,\n                \"subscription_next_transaction_date\": null,\n                \"subscription_start_date\": null,\n                \"url\": null,\n                \"weight\": 0,\n                \"width\": 0\n            }\n        ],\n        \"fx:payments\": [\n            {\n                \"_links\": { },\n                \"amount\": 54.2,\n                \"cc_exp_month\": \"01\",\n                \"cc_exp_year\": \"2023\",\n                \"cc_number_masked\": \"xxxxxxxxx4242\",\n                \"cc_type\": \"Visa\",\n                \"date_created\": null,\n                \"date_modified\": \"2018-03-01T00:00:00-0700\",\n                \"fraud_protection_score\": 0,\n                \"gateway_type\": \"vantiv\",\n                \"paypal_payer_id\": null,\n                \"processor_response\": \"Vantiv Transaction ID: 123456789123456789\",\n                \"processor_response_details\": null,\n                \"purchase_order\": null,\n                \"third_party_id\": null,\n                \"type\": \"plastic\"\n            }\n        ],\n        \"fx:shipments\": [\n            {\n                \"_links\": { },\n                \"address1\": \"123 Test Street\",\n                \"address2\": \"Level 2\",\n                \"address_name\": \"Me\",\n                \"city\": \"SAINT PAUL\",\n                \"company\": \"Some Company\",\n                \"country\": \"US\",\n                \"date_created\": null,\n                \"date_modified\": \"2018-03-01T00:00:00-0700\",\n                \"first_name\": \"John\",\n                \"last_name\": \"Smith\",\n                \"phone\": \"123456789\",\n                \"postal_code\": \"55115\",\n                \"region\": \"MN\",\n                \"shipping_service_description\": \"USPS Priority Mail 2-Day\",\n                \"shipping_service_id\": 14,\n                \"total_item_price\": 37.9,\n                \"total_price\": 54.2,\n                \"total_shipping\": 17.85,\n                \"total_tax\": 2.24\n            }\n        ]\n    },\n    \"_links\": { },\n    \"currency_code\": \"USD\",\n    \"currency_symbol\": \"$\",\n    \"customer_email\": \"john@example.com\",\n    \"customer_first_name\": \"John\",\n    \"customer_ip\": \"193.123.4.56\",\n    \"customer_last_name\": \"Smith\",\n    \"customer_tax_id\": null,\n    \"data_is_fed\": true,\n    \"date_created\": null,\n    \"date_modified\": \"2018-03-01T00:00:00-0700\",\n    \"display_id\": 3456789,\n    \"hide_transaction\": false,\n    \"id\": 3456789,\n    \"ip_country\": \"United States\",\n    \"is_new_subscription\": true,\n    \"is_test\": true,\n    \"locale_code\": \"en_US\",\n    \"receipt_url\": \"https:\u002F\u002Fexample.foxycart.com\u002Freceipt?id=2a5175756293151099587e3b45590376\",\n    \"status\": \"approved\",\n    \"store_id\": \"12345\",\n    \"store_version\": \"2.0\",\n    \"total_discount\": -3.79,\n    \"total_future_item_price\": 0,\n    \"total_future_shipping\": 0,\n    \"total_item_price\": 37.9,\n    \"total_order\": 54.2,\n    \"total_shipping\": 17.85,\n    \"total_tax\": 2.24,\n    \"transaction_date\": \"2018-03-01T00:00:00-0700\",\n    \"transaction_type\": \"transaction\",\n    \"user_agent\": \"Mozilla\u002F5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko\u002F20100101 Firefox\u002F47.0\"\n}\n",{"type":375,"attrs":842,"content":843},{"textAlign":55},[844],{"text":845,"type":380},"Two extra attributes help identify the transaction:",{"type":847,"content":848},"bullet_list",[849,883],{"type":403,"content":850},[851],{"type":375,"attrs":852,"content":853},{"textAlign":55},[854,857,859,863,864,868,869,873,874,878,880],{"text":596,"type":380,"marks":855},[856],{"type":592},{"text":858,"type":380}," — what kind of transaction this was: ",{"text":860,"type":380,"marks":861},"transaction",[862],{"type":592},{"text":709,"type":380},{"text":865,"type":380,"marks":866},"updateinfo",[867],{"type":592},{"text":709,"type":380},{"text":870,"type":380,"marks":871},"subscription_modification",[872],{"type":592},{"text":709,"type":380},{"text":875,"type":380,"marks":876},"subscription_renewal",[877],{"type":592},{"text":879,"type":380},", or ",{"text":602,"type":380,"marks":881},[882],{"type":592},{"type":403,"content":884},[885],{"type":375,"attrs":886,"content":887},{"textAlign":55},[888,892],{"text":889,"type":380,"marks":890},"is_new_subscription",[891],{"type":592},{"text":893,"type":380}," — a boolean indicating whether a new subscription is included in this transaction",{"type":391,"attrs":895,"content":896},{"level":832,"textAlign":55},[897],{"text":579,"type":380},{"type":836,"attrs":899,"content":900},{"class":55},[901],{"text":902,"type":380},"{\n    \"_embedded\": {\n        \"fx:customer\": {\n            \"_links\": { },\n            \"date_created\": null,\n            \"date_modified\": \"2019-08-09T23:44:00-0700\",\n            \"email\": \"john@example.com\",\n            \"first_name\": \"John\",\n            \"forgot_password\": null,\n            \"forgot_password_timestamp\": null,\n            \"id\": 12345,\n            \"is_anonymous\": false,\n            \"last_login_date\": \"2019-08-09T23:43:49-0700\",\n            \"last_name\": \"Smith\",\n            \"password_hash\": \"$2y$13$Jx7p31h18VnW.ab38QaYJu1QCzsyMQZKdY5s21nYewmGQj0OQCyIq\",\n            \"password_hash_config\": \"13\",\n            \"password_hash_type\": \"bcrypt\",\n            \"password_salt\": null,\n            \"tax_id\": null\n        },\n        \"fx:transaction_template\": {\n            \"_embedded\": {\n                \"fx:discounts\": [\n                    {\n                        \"_links\": { },\n                        \"amount\": -2,\n                        \"code\": \"coupon\",\n                        \"date_created\": null,\n                        \"date_modified\": null,\n                        \"display\": \"-$2.00\",\n                        \"is_future_discount\": false,\n                        \"is_taxable\": false,\n                        \"name\": \"Default Discount\"\n                    }\n                ],\n                \"fx:items\": [\n                    {\n                        \"_embedded\": {\n                            \"fx:item_category\": {\n                                \"_links\": { },\n                                \"admin_email\": \"john@example.com\",\n                                \"admin_email_template_uri\": null,\n                                \"code\": \"DEFAULT\",\n                                \"customer_email_template_uri\": null,\n                                \"customs_value\": 0,\n                                \"date_created\": null,\n                                \"date_modified\": \"2019-08-09T23:47:58-0700\",\n                                \"default_length_unit\": \"IN\",\n                                \"default_weight\": 0,\n                                \"default_weight_unit\": \"LBS\",\n                                \"discount_details\": \"1-10\",\n                                \"discount_name\": \"Gift Set\",\n                                \"discount_type\": null,\n                                \"handling_fee\": 1,\n                                \"handling_fee_minimum\": 0,\n                                \"handling_fee_percentage\": 10,\n                                \"handling_fee_type\": \"flat_percent_with_minimum\",\n                                \"item_delivery_type\": \"flat_rate\",\n                                \"max_downloads_per_customer\": 3,\n                                \"max_downloads_time_period\": 24,\n                                \"name\": \"Default for all products\",\n                                \"send_admin_email\": false,\n                                \"send_customer_email\": false,\n                                \"shipping_flat_rate\": 5,\n                                \"shipping_flat_rate_type\": \"per_order\"\n                            }\n                        },\n                        \"_links\": { },\n                        \"code\": null,\n                        \"date_created\": null,\n                        \"date_modified\": \"2019-08-10T00:40:14-0700\",\n                        \"discount_details\": null,\n                        \"discount_name\": null,\n                        \"discount_type\": null,\n                        \"expires\": 0,\n                        \"height\": 0,\n                        \"image\": null,\n                        \"is_future_line_item\": false,\n                        \"item_category_uri\": \"https:\u002F\u002Fapi.foxycart.com\u002Fitem_categories\u002F100\",\n                        \"length\": 0,\n                        \"name\": \"test\",\n                        \"parent_code\": null,\n                        \"price\": 20,\n                        \"quantity\": 1,\n                        \"quantity_max\": 0,\n                        \"quantity_min\": 0,\n                        \"shipto\": \"Me\",\n                        \"subscription_end_date\": \"2019-08-11T00:00:00-0700\",\n                        \"subscription_frequency\": \"1y\",\n                        \"subscription_next_transaction_date\": \"2019-10-24T00:00:00-0700\",\n                        \"subscription_start_date\": \"2017-10-24T00:00:00-0700\",\n                        \"url\": null,\n                        \"weight\": 0,\n                        \"width\": 0\n                    }\n                ]\n            },\n            \"_links\": { },\n            \"billing_address1\": \"123 Test Street\",\n            \"billing_address2\": null,\n            \"billing_city\": \"SAINT PAUL\",\n            \"billing_company\": \"Some Company\",\n            \"billing_country\": \"US\",\n            \"billing_first_name\": \"John\",\n            \"billing_last_name\": \"Smith\",\n            \"billing_phone\": null,\n            \"billing_postal_code\": \"5000\",\n            \"billing_state\": \"MN\",\n            \"customer_uri\": \"https:\u002F\u002Fapi.foxycart.com\u002Fcustomers\u002F15460475\",\n            \"date_created\": null,\n            \"date_modified\": \"2019-08-10T00:40:14-0700\",\n            \"language\": null,\n            \"locale_code\": \"en_US\",\n            \"shipping_address1\": \"123 Test Street\",\n            \"shipping_address2\": null,\n            \"shipping_city\": \"SAINT PAUL\",\n            \"shipping_company\": \"Some Company\",\n            \"shipping_country\": \"US\",\n            \"shipping_first_name\": \"John\",\n            \"shipping_last_name\": \"Smith\",\n            \"shipping_phone\": null,\n            \"shipping_postal_code\": \"5000\",\n            \"shipping_state\": \"MN\",\n            \"template_set_uri\": null,\n            \"total_future_shipping\": 0,\n            \"total_item_price\": 20,\n            \"total_order\": 25,\n            \"total_shipping\": 5,\n            \"total_tax\": 0,\n            \"use_customer_shipping_address\": false\n        }\n    },\n    \"_links\": { },\n    \"date_created\": null,\n    \"date_modified\": \"2019-08-11T04:13:01-0700\",\n    \"end_date\": \"2019-08-11T00:00:00-0700\",\n    \"error_message\": null,\n    \"first_failed_transaction_date\": null,\n    \"frequency\": \"1y\",\n    \"is_active\": false,\n    \"next_transaction_date\": \"2019-10-24T00:00:00-0700\",\n    \"past_due_amount\": 0,\n    \"start_date\": \"2017-10-24T00:00:00-0700\",\n    \"sub_token_url\": \"https:\u002F\u002Fexample.foxycart.com\u002Fcart?sub_token=b37fb078e12ba5ef86773b43e60bdea5124a46f4b5698a5387862cd82042d003c\",\n    \"third_party_id\": null\n}\n",{"type":391,"attrs":904,"content":905},{"level":393,"textAlign":55},[906],{"text":907,"type":380},"Decrypting an encrypted payload",{"type":375,"attrs":909,"content":910},{"textAlign":55},[911,913,917],{"text":912,"type":380},"If your webhook endpoint URL isn’t secured with SSL, the payload is sent encrypted rather than raw. The payload arrives as three hexadecimal values — the MAC (Message Authentication Code), IV (Initialization Vector), and the encrypted data — concatenated with a ",{"text":914,"type":380,"marks":915},":",[916],{"type":592},{"text":918,"type":380}," character.",{"type":375,"attrs":920,"content":921},{"textAlign":55},[922],{"text":923,"type":380},"To decrypt it:",{"type":398,"attrs":925,"content":926},{"order":400},[927,938,945,952,959,966],{"type":403,"content":928},[929],{"type":375,"attrs":930,"content":931},{"textAlign":55},[932,934,937],{"text":933,"type":380},"Split the payload into its three parts by the ",{"text":914,"type":380,"marks":935},[936],{"type":592},{"text":918,"type":380},{"type":403,"content":939},[940],{"type":375,"attrs":941,"content":942},{"textAlign":55},[943],{"text":944,"type":380},"Confirm validity by securely comparing the MAC value to an HMAC SHA256 digest of the IV and data values concatenated together.",{"type":403,"content":946},[947],{"type":375,"attrs":948,"content":949},{"textAlign":55},[950],{"text":951,"type":380},"Convert the IV value from hexadecimal to binary.",{"type":403,"content":953},[954],{"type":375,"attrs":955,"content":956},{"textAlign":55},[957],{"text":958,"type":380},"Create a binary SHA256 hash of the webhook encryption key.",{"type":403,"content":960},[961],{"type":375,"attrs":962,"content":963},{"textAlign":55},[964],{"text":965,"type":380},"Decrypt the data as AES-256-CBC using the IV and key binary values from the previous two steps.",{"type":403,"content":967},[968],{"type":375,"attrs":969,"content":970},{"textAlign":55},[971],{"text":972,"type":380},"Parse the decrypted data as JSON.",{"type":391,"attrs":974,"content":975},{"level":832,"textAlign":55},[976],{"text":977,"type":380},"PHP",{"type":836,"attrs":979,"content":980},{"class":55},[981],{"text":982,"type":380},"\u003C?php\n\n$parts = explode(':', $data);\n$mac = $parts[0];\n$iv = $parts[1];\n$data = $parts[2];\n\n$calc_mac = hash('sha256', \"$iv:$data\");\n\nif (hash_equals($calc_mac, $mac)) {\n    $iv = hex2bin($iv);\n    $key = hex2bin(hash('sha256', FOXY_WEBHOOK_ENCRYPTION_KEY));\n\n    if ($data = openssl_decrypt($data, 'aes-256-cbc', $key, 0, $iv)) {\n        $parsedData = json_decode($data, true);\n    } else {\n        while ($msg = openssl_error_string()) {\n            echo(\"Openssl error: \" . $msg);\n        }\n        http_response_code(500);\n        return;\n    }\n} else {\n    \u002F\u002F Encrypted data corrupted\n    echo(\"Encrypted data corrupted\");\n    http_response_code(500);\n    return;\n}\n",{"type":391,"attrs":984,"content":985},{"level":832,"textAlign":55},[986],{"text":987,"type":380},"Ruby",{"type":836,"attrs":989,"content":990},{"class":55},[991],{"text":992,"type":380},"mac, iv, data = data.split(\":\")\ncalc_mac = Digest::SHA256.hexdigest(\"#{iv}:#{data}\")\n\nif Rack::Utils.secure_compare(calc_mac, mac)\n    begin\n        data = Base64::decode64(data)\n        decipher = OpenSSL::Cipher::Cipher.new('aes-256-cbc')\n        decipher.decrypt\n        decipher.key = Digest::SHA256.digest(ENV['FOXY_WEBHOOK_ENCRYPTION_KEY'])\n        decipher.iv = iv.scan(\u002F..\u002F).map { |x| x.hex.chr }.join\n        data = decipher.update(data) + decipher.final\n    rescue OpenSSL::Cipher::CipherError\n        halt(500, \"Unable to decrpyt data\")\n    end\nelse\n    halt(500, \"Encrypted data corrupted\")\nend\n",{"type":391,"attrs":994,"content":995},{"level":393,"textAlign":55},[996],{"text":997,"type":380},"Notes",{"type":847,"content":999},[1000,1007],{"type":403,"content":1001},[1002],{"type":375,"attrs":1003,"content":1004},{"textAlign":55},[1005],{"text":1006,"type":380},"Avoid storing your webhook encryption key directly in your codebase — store it as an environment variable instead.",{"type":403,"content":1008},[1009],{"type":375,"attrs":1010,"content":1011},{"textAlign":55},[1012],{"text":1013,"type":380},"Always use a secure\u002Fconstant-time comparison method when comparing signatures or MAC values, rather than a direct equality check.",{"id":55,"alt":55,"name":13,"focus":55,"title":55,"source":55,"filename":13,"copyright":55,"fieldtype":77,"meta_data":1015},{},"How to validate a legacy webhook payload signature and decrypt it if your endpoint isn't secured with HTTPS.",[],"verify-and-decrypt-a-legacy-webhook-payload","help\u002Farticles\u002Fverify-and-decrypt-a-legacy-webhook-payload",-3930,[],"a4447b6d-720c-4a02-8ec8-e2882cb1f453",[],{"name":1025,"created_at":1026,"published_at":1027,"updated_at":1028,"id":1029,"uuid":42,"content":1030,"slug":43,"full_slug":43,"sort_by_date":55,"position":1208,"tag_list":1209,"is_startpage":24,"parent_id":55,"meta_data":55,"group_id":1210,"first_published_at":1211,"release_id":55,"lang":61,"path":55,"alternates":1212,"default_full_slug":55,"translated_slugs":55},"Contact","2022-09-23T19:56:58.957Z","2025-05-08T18:24:40.382Z","2025-05-08T18:24:40.392Z",3138,{"seo":1031,"_uid":1034,"title":1035,"action":1036,"fields":1037,"method":1184,"columns":1185,"subtitle":1199,"component":43,"button_text":1205,"submit_title":1206,"submit_subtitle":1207},{"_uid":1032,"title":1025,"plugin":1033,"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",[1038,1043,1047,1155,1158,1163,1178],{"_uid":1039,"name":1040,"type":380,"label":1041,"options":13,"required":33,"component":1042,"placeholder":13},"9a70b226-2036-4f90-a052-b3efa61c5896","name","Name","form___field",{"_uid":1044,"name":1045,"type":1045,"label":1046,"options":13,"required":33,"component":1042,"placeholder":13},"86ba35be-ff43-4a28-8633-14052a8f6622","email","Email Address",{"_uid":1048,"name":1049,"type":1050,"label":1051,"options":1052,"required":33,"component":1042,"conditions":1053,"placeholder":13},"3f827475-492c-4f97-aa1e-2386ac263b6c","topic","select","Topic","Presales, Support, Billing, Partnerships, Order Enquiry, Other",[1054,1109,1119,1126,1134,1142,1148],{"_uid":1055,"equals":1056,"fields":1057,"component":1108},"e21d97dd-e68e-4fa6-ba97-bc40f3041dde","Order Enquiry",[1058],{"_uid":1059,"body":1060,"type":1106,"title":13,"component":1107},"b64992bc-6d53-48b8-b7a0-d81e5a062e50",{"type":372,"content":1061},[1062],{"type":375,"content":1063},[1064,1066,1073,1075,1077,1078,1082,1084,1089,1097,1099,1104],{"text":1065,"type":380},"We are ",{"text":1067,"type":380,"marks":1068},"Foxy.io",[1069],{"type":385,"attrs":1070},{"href":1071,"uuid":55,"anchor":55,"custom":1072,"target":55,"linktype":31},"http:\u002F\u002FFoxy.io",{},{"text":1074,"type":380},", 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":1076},"hard_break",{"type":1076},{"text":1079,"type":380,"marks":1080},"NOTE:",[1081],{"type":414},{"text":1083,"type":380}," We are ",{"text":1085,"type":380,"marks":1086},"not ",[1087],{"type":1088},"italic",{"text":1090,"type":380,"marks":1091},"Foxy.in",[1092,1096],{"type":385,"attrs":1093},{"href":1094,"uuid":55,"anchor":55,"custom":1095,"target":55,"linktype":31},"http:\u002F\u002FFoxy.in",{},{"type":1088},{"text":1098,"type":380},". We are not in any way affiliated with ",{"text":1090,"type":380,"marks":1100},[1101],{"type":385,"attrs":1102},{"href":1094,"uuid":55,"anchor":55,"custom":1103,"target":55,"linktype":31},{},{"text":1105,"type":380},", and cannot help in any way with your order from that website.","danger","global___alert","form___condition",{"_uid":1110,"equals":1111,"fields":1112,"component":1108},"8765c3e1-25cf-44aa-b8ea-fc6094acf9c3","Presales",[1113],{"_uid":1114,"name":1115,"type":1116,"label":13,"options":13,"required":24,"component":1042,"conditions":1117,"placeholder":13,"default_value":1118},"cf464f8e-d643-4f6e-af29-d3abffaf7380","department_email_address","hidden",[],"hello@foxy.io",{"_uid":1120,"equals":204,"fields":1121,"component":1108},"4007b6d8-77e5-421d-bd1e-6f336dd853fb",[1122],{"_uid":1123,"name":1115,"type":1116,"label":13,"options":13,"required":24,"component":1042,"conditions":1124,"placeholder":13,"default_value":1125},"7b4c6aa5-a68c-45e0-9ce1-0a36af10c0c2",[],"help@foxy.io",{"_uid":1127,"equals":1128,"fields":1129,"component":1108},"1dbb8f11-613d-43cd-9e09-1b94f6e19219","Billing",[1130],{"_uid":1131,"name":1115,"type":1116,"label":13,"options":13,"required":24,"component":1042,"conditions":1132,"placeholder":13,"default_value":1133},"a0ac0d1b-bc4f-4a6c-a682-581d450b0b73",[],"help+billing@foxy.io",{"_uid":1135,"equals":1136,"fields":1137,"component":1108},"a0a53a50-7172-4a29-ba58-181e38874e12","Partnerships",[1138],{"_uid":1139,"name":1115,"type":1116,"label":13,"options":13,"required":24,"component":1042,"conditions":1140,"placeholder":13,"default_value":1141},"7aa011d9-f374-4aed-b5a5-929b54aaf152",[],"partners@foxy.io",{"_uid":1143,"equals":1056,"fields":1144,"component":1108},"a4cd431f-25d5-41c7-bfdc-02c908c8fb47",[1145],{"_uid":1146,"name":1115,"type":1116,"label":13,"options":13,"required":24,"component":1042,"conditions":1147,"placeholder":13,"default_value":1118},"f5d52168-d6ae-451b-94ee-2ced1cbd28ad",[],{"_uid":1149,"equals":1150,"fields":1151,"component":1108},"25aba1ed-eb41-4bbc-aa89-f7a7167ea86e","Other",[1152],{"_uid":1153,"name":1115,"type":1116,"label":13,"options":13,"required":24,"component":1042,"conditions":1154,"placeholder":13,"default_value":1118},"f40dfaef-c203-4b71-bf4e-e1b43cef192b",[],{"_uid":1156,"component":1157},"e9c53a05-f40a-4510-aaf8-bc072a235a0c","form___subject",{"_uid":1159,"name":1160,"type":1161,"label":1162,"options":13,"required":33,"component":1042,"placeholder":13},"a4c4d385-fff4-4978-99fb-b68cfea623d6","message","textarea","Message",{"_uid":1164,"name":1165,"type":1050,"label":1166,"options":1167,"required":33,"component":1042,"conditions":1168,"placeholder":13},"8a3c9f85-f438-427d-9c7a-d7b295a14b5b","existing_user","Are you an existing user?","No, Yes",[1169],{"_uid":1170,"equals":1171,"fields":1172,"component":1108},"115933d6-262a-4b59-8fa8-579c5ad73de1","Yes",[1173],{"_uid":1174,"name":1175,"type":380,"label":1176,"options":13,"required":33,"component":1042,"conditions":1177,"placeholder":13},"44b6ff23-98f0-4e95-b7f5-c23e06415c2d","subdomain","Store Subdomain",[],{"_uid":1179,"name":1180,"type":1050,"label":1181,"options":1182,"required":33,"component":1042,"conditions":1183,"placeholder":13},"922a5cef-3af2-4113-8855-36c7910e3ee3","user_type","What type of user are you?","Developer, Designer, Merchant",[],"POST",[1186],{"_uid":1187,"text":1188,"title":1197,"component":1198},"7323b90d-a93a-4bf1-baa9-20d0b7ead61b",{"type":372,"content":1189},[1190],{"type":375,"content":1191},[1192,1194,1195],{"text":1193,"type":380},"855.369.9227",{"type":1076},{"text":1196,"type":380},"9:30am-6pm Central M-F","Pre-sales, Sales, & Partnerships","contact___footer_column",{"type":372,"content":1200},[1201],{"type":375,"content":1202},[1203],{"text":1204,"type":380},"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",[],{},1785861254099]