[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"post-fixing-paddle-payments-after-our-domain-split":3,"related-fixing-paddle-payments-after-our-domain-split":33},{"id":4,"slug":5,"title":6,"excerpt":7,"content":8,"status":9,"tags":10,"coverMedia":15,"author":18,"createdAt":25,"updatedAt":26,"category":27},"199123c1-65d9-4900-8baf-5bc230d6471f","fixing-paddle-payments-after-our-domain-split","Fixing Paddle Payments After Our Domain Split","We resolved our Paddle checkout issue after migrating our application to app.crystade.com. Learn how we cleared Cloudflare Worker blockers and restored seamless billing.","\u003Cp>We have an important operational update for our users: \u003Cstrong>checkout and payment processing through Paddle is fully restored\u003C\u002Fstrong>.\u003C\u002Fp>\u003Cp>If you recently tried to upgrade your plan or purchase extra resource capacity on Crystade and ran into a payment error, we apologize for the friction. Below is a quick breakdown of what caused the issue, how we worked with the Paddle team to resolve it, and what it means for your account today.\u003C\u002Fp>\u003Ch2>\u003Cstrong>The Cause: Separating the Web Application Domain\u003C\u002Fstrong>\u003C\u002Fh2>\u003Cp>To improve platform performance, modularity, and security, we recently separated our frontend architecture into two dedicated domains:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ccode>crystade.com\u003C\u002Fcode>: Hosts our primary website, marketing pages, and technical documentation.\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode>app.crystade.com\u003C\u002Fcode>: Hosts the core SaaS application platform, dashboard, and monitoring engine.\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Cp>Because Paddle acts as our Merchant of Record (MoR)—handling global tax collection, compliance, and invoicing—it enforces domain origin checks during checkout initialization. Our Paddle account was originally registered for \u003Ccode>crystade.com\u003C\u002Fcode>. When users tried to initiate payments or manage subscriptions from \u003Ccode>app.crystade.com\u003C\u002Fcode>, Paddle’s security checks flagged the domain mismatch, preventing checkout overlays from launching.\u003C\u002Fp>\u003Ch2>\u003Cstrong>Edge Blockers with Cloudflare Workers\u003C\u002Fstrong>\u003C\u002Fh2>\u003Cp>Resolving this was not as simple as updating an origin URL in an administrative dashboard. We host our frontend using \u003Cstrong>Cloudflare Workers\u003C\u002Fstrong> to deliver fast, edge-rendered pages to our global audience.\u003C\u002Fp>\u003Cp>During the re-verification process, this serverless edge setup introduced a few technical hurdles:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Cstrong>Origin Header Modifications\u003C\u002Fstrong>: Edge routing rules on Cloudflare Workers inadvertently modified host and referer headers required by Paddle’s security verification.\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>Domain Verification Failures\u003C\u002Fstrong>: Automated domain checks failed when probing the worker routes due to how edge fetches were configured.\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Cp>These blockers required custom routing adjustments to ensure request headers remained intact before Paddle could re-verify our domain application.\u003C\u002Fp>\u003Ch2>\u003Cstrong>Resolution and Approval\u003C\u002Fstrong>\u003C\u002Fh2>\u003Cp>We worked closely with the Paddle support engineering team to trace the edge requests and resolve the configuration blockers.\u003C\u002Fp>\u003Col>\u003Cli>\u003Cp>\u003Cstrong>Header Realignment\u003C\u002Fstrong>: We updated our Cloudflare Worker configuration to preserve pristine origin headers on all outbound billing API calls.\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>Domain Review\u003C\u002Fstrong>: The Paddle support team reviewed our architecture update and approved \u003Ccode>app.crystade.com\u003C\u002Fcode> as an authorized domain.\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cstrong>End-to-End Verification\u003C\u002Fstrong>: We completed test transactions across plan changes, addon updates, and webhook callbacks to confirm synchronization.\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Fol>\u003Cp>We extend a huge \u003Cstrong>thank you to the Paddle support team\u003C\u002Fstrong> for their quick response times, hands-on guidance, and swift review of our case. Their support was instrumental in minimizing downtime for our billing workflows.\u003C\u002Fp>\u003Ch2>\u003Cstrong>What This Means for You\u003C\u002Fstrong>\u003C\u002Fh2>\u003Cp>All billing capabilities on \u003Ccode>app.crystade.com\u003C\u002Fcode> are fully operational. Billing admins can now execute all self-service actions without error:\u003C\u002Fp>\u003Ctable style=\"min-width: 75px;\">\u003Ccolgroup>\u003Ccol style=\"min-width: 25px;\">\u003Ccol style=\"min-width: 25px;\">\u003Ccol style=\"min-width: 25px;\">\u003C\u002Fcolgroup>\u003Ctbody>\u003Ctr>\u003Cth colspan=\"1\" rowspan=\"1\" style=\"text-align: left;\">\u003Cp>\u003Cstrong>Feature\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Fth>\u003Cth colspan=\"1\" rowspan=\"1\" style=\"text-align: left;\">\u003Cp>\u003Cstrong>Status\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Fth>\u003Cth colspan=\"1\" rowspan=\"1\" style=\"text-align: left;\">\u003Cp>\u003Cstrong>Description\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Fth>\u003C\u002Ftr>\u003Ctr>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>\u003Cstrong>Plan Upgrades &amp; Downgrades\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>Operational\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>Switch between Free, Starter, and Standard plans seamlessly.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>\u003Cstrong>Addon Purchases\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>Operational\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>Add extra capacity (such as Cron Job slots) on demand.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>\u003Cstrong>Hosted Billing Portal\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>Operational\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>Update payment methods, edit tax IDs, and download invoices.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>\u003Cstrong>Webhook Provisioning\u003C\u002Fstrong>\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>Operational\u003C\u002Fp>\u003C\u002Ftd>\u003Ctd colspan=\"1\" rowspan=\"1\">\u003Cp>Automated, real-time granting of entitlements upon payment.\u003C\u002Fp>\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003Cp>\u003C\u002Fp>","published",[11,12,13,14],"monitor","paddle","payment","cloudflare",{"id":16,"url":17},"521b9646-f693-4645-b532-731007d8f344","https:\u002F\u002Fcdn.crystade.com\u002Fgrowth-media\u002F2026\u002F08\u002F06041a0d-b229-41ef-8d82-d88b4ad09808-Robot_at_store_cashier_202608132053.jpeg",{"id":19,"name":20,"bio":21,"avatar":22},"a9be23b5-5867-4dd9-a173-2c11307c4ded","Anh Huynh","Building stuffs",{"id":23,"url":24},"64bab758-67e7-4a67-9636-bf1318378571","https:\u002F\u002Fcdn.crystade.com\u002Fgrowth-media\u002F2026\u002F08\u002F3241ce71-aaa9-42a4-ac8d-552f8a465b6d-749022732_18368643070237484_2800348978445528529_n.jpg","2026-08-13T13:54:05.845Z","2026-08-13T13:56:12.491Z",{"id":28,"name":29,"slug":30,"description":31,"sortOrder":32},"ba8d305a-5b1b-4c2c-bb4a-63b5078030c1","Release Radar","release-radar","Product announcements, changelogs, new features, and version breakdowns.",0,{"data":34,"meta":113},[35,54,77,99],{"id":36,"slug":37,"title":38,"excerpt":39,"status":9,"tags":40,"createdAt":44,"coverMedia":45,"author":48,"category":53},"ec8539c3-9d70-447f-85c4-fa33905e15c9","crystade-expands-global-monitoring-with-8-new-locations","Crystade Expands Global Monitoring with 8 New Locations","We’ve added eight new monitoring locations across the globe, powered by Google Cloud Platform. Discover how broader coverage gives you deeper visibility into regional outages and latency.",[41,42,43],"location","monitoring","coverage","2026-09-08T01:44:44.205Z",{"id":46,"url":47},"3d567a26-571a-4a33-a630-aac803a729e4","https:\u002F\u002Fcdn.crystade.com\u002Fgrowth-media\u002F2026\u002F09\u002F205284db-8b6b-4ff5-857b-4a38d1cf2235-Screenshot_2026-09-08_081218.png",{"id":49,"name":50,"bio":51,"avatar":52},"667a6b3d-5bfa-4550-bc3b-9888abff818b","Miles Carter","Dreaming in algorithms, debugging in reality. I believe every great product starts with curiosity and care.",null,{"id":28,"name":29,"slug":30,"description":31,"sortOrder":32},{"id":55,"slug":56,"title":57,"excerpt":58,"status":9,"tags":59,"createdAt":65,"coverMedia":66,"author":69,"category":76},"5345e691-1235-4216-9196-0dc196f9ba56","crystade-now-supports-telegram-zalo-alerts","Crystade Now Supports Telegram & Zalo Alerts","Get instant monitoring and incident notifications directly in Telegram and Zalo. Crystade now offers webhook delivery to these popular chat platforms, alongside Discord and Slack.",[60,61,62,63,64],"alerting","zalo","slack","discord","telegram","2026-09-06T09:31:47.092Z",{"id":67,"url":68},"cd6f1d94-c3ff-493b-87e9-f9362e50481f","https:\u002F\u002Fcdn.crystade.com\u002Fgrowth-media\u002F2026\u002F09\u002Ff1b8c67a-374e-439a-a2b6-660b3cce10c8-4156e500-afec-44f4-81e8-aa83fe601139.png",{"id":70,"name":71,"bio":72,"avatar":73},"83c59046-756d-4aee-b49b-84a2cbd2491b","민준","Building pixels, logic, and a little happiness. Every line of code is another step toward something meaningful.",{"id":74,"url":75},"6bf343af-c883-4da7-a162-131f1e829094","https:\u002F\u002Fcdn.crystade.com\u002Fgrowth-media\u002F2026\u002F08\u002F5a23300b-ff16-4e43-9c10-fd82a8b3c2f5-Boy_avatar_different_angle_202608041410.jpeg",{"id":28,"name":29,"slug":30,"description":31,"sortOrder":32},{"id":78,"slug":79,"title":80,"excerpt":81,"status":9,"tags":82,"createdAt":87,"coverMedia":88,"author":91,"category":98},"b1f30ded-83cf-47ad-8e8b-575a137a198e","3-new-developer-tools-from-crystade-cron-sla-and-curl","3 New Developer Tools from Crystade: Cron, SLA, and Curl","Crystade launches three free utilities: a cron expression builder, an SLA downtime calculator, and a curl command generator. Simplify scheduling, understand uptime targets, and test APIs faster.",[83,84,85,86,42],"cron","sla","downtime","curl","2026-09-05T10:43:25.825Z",{"id":89,"url":90},"ecd19c52-bd59-48a8-9fdc-abf8d73db8c0","https:\u002F\u002Fcdn.crystade.com\u002Fgrowth-media\u002F2026\u002F09\u002F4cc9232e-8bd8-47f6-ace6-70f6112d833a-Men_and_robot_doing_mechanics_202609051743.jpeg",{"id":92,"name":93,"bio":94,"avatar":95},"189956e6-3c2c-4d0b-86a2-4243ca15fe7b","Mộng Hạ","Software engineer • Summer lover • Ocean soul ☁️🌊",{"id":96,"url":97},"90e26b21-25f7-4c69-9f26-aaca10372a9d","https:\u002F\u002Fcdn.crystade.com\u002Fgrowth-media\u002F2026\u002F08\u002Fbbb5b302-03d3-42b0-8cf4-d0104055ddc3-Change_frame_angle_capture_neck_202608041402.jpeg",{"id":28,"name":29,"slug":30,"description":31,"sortOrder":32},{"id":100,"slug":101,"title":102,"excerpt":103,"status":9,"tags":104,"createdAt":107,"coverMedia":108,"author":111,"category":112},"85144cd1-d2a2-438f-92bc-e3f3658beab7","crystades-new-onboarding-flow","Crystade’s New Onboarding Flow","Crystade now asks a few simple questions after registration and automatically sets up your first monitor or cron job. No more blank dashboards—start getting value immediately.",[105,42,106],"onboarding","cronjob","2026-09-04T12:53:43.866Z",{"id":109,"url":110},"b60538a4-ca5c-48ef-a2c0-99353fd31fd0","https:\u002F\u002Fcdn.crystade.com\u002Fgrowth-media\u002F2026\u002F09\u002Fc0c2e413-f13c-4362-8b3d-a47ea3bfa981-Create_product_onboarding_illust__202609042013.jpeg",{"id":49,"name":50,"bio":51,"avatar":52},{"id":28,"name":29,"slug":30,"description":31,"sortOrder":32},{"total":114,"page":115,"pageSize":116},10,1,4]